2007-05-07

クラスのエクスポート

残業中です。
こんなことしてていいのかと思いつつ、立会いのみで暇だからいいかとも思いつつ。

cygwinでlibltdlを利用してモジュールを明示的に読み込むプログラムを作っていたのだが、
ロードした直後でAbortするという現象に悩まされていた。
いまいち原因がわからないままいろいろ試したのだが、どうも解決しない。
ということでgoogle先生に尋ねてみたら、このページが見つかった。
http://www2s.biglobe.ne.jp/~ragnarok/program/win32/class_of_cpp_in_dll.htm
どうやら、インターフェースを作って、呼び出しを別メソッドでやる必要があるらしい。
結構面倒だなと思いつつ、今あるモジュールの皮(インターフェースのこと)を作ってやり、
生成メソッドを作って動かしてみた。
おや、意外とうまくいくもんだね。
よくやるEXPORTマクロとか定義しなくてもいいみたい。ふ~ん。
戻り値と引数はプリミティブにしろだと!無理!バイナリ互換性などいらんわ!
ただ、いろいろやっているので、cygwin1.dllをなくすのは無理っぽい。
う~ん、Windowsコンソールアプリとして動いてほしいんだが・・・
やりたいこととしてはJavaのリフレクションみたいなことがやりたいんだけど、
ネイティブ吐く言語では難しいのかね。
plugin形式が精一杯かな・・・

No comments:

Post a Comment