Swig

終わり

ラッパをdmdで完璧にコンパイル通るところまでやったが、ためしに bcc32 で普通に使ってみようと思ったらコンパイルできねーでやんの。モウダメ。なぜ外部シンボル未解決…。ちなみに、物理エンジンの tokamak をいろいろやってる。

困っちゃうところ

うーん、Swig with D の変換精度、あんまり良くない。C++側で enum で定義している定数を、wrapper 側で関数として定義している。しかも定数名と関数名が同じだから、名前が衝突しているし。…バグか?extern "C" をしているにもかかわらず、関数の多重定義を…

続き。

DLLを作らないで、直接オブジェクトファイルをリンクさせた場合には、Access Violation は起こらないようだ。うーん、あんまりよくわかってないので、原因究明できるまでは直接リンクでいいか…。

できた

Swig(with D) が吐き出すラップ関数の定義は #define DllExport __declspec( dllexport ) DllExport int new_Test() {だが、 DllExport int __stdcall new_Test() {にしたらできた。 #できた!と思ったら実行終了した瞬間シェルが終了してしまったが…。dmd…

ぜんぜんできない

swig -dmd -c++ test.iで test_wrap.cxx, test.d testPINVOKE.d が吐かれて mv test_wrap.cxx test_wrap.cpp bcc32 -tWD -e"test_wrap.dll" test_wrap.cpp test.cppで test_wrap.dll ができてる(ように見える)んだけど、 implib -a test_wrap.lib test_wra…