« イベントへ応答 | メイン | 共有ライブラリ »

2005年03月25日

Teaspire 開発日誌:: FBX SDKを追加してみる

    

wxWidget を使って作っているツールのプロジェクトへFBX SDK のサンプルを元にライブラリやインクルードディレクトリを追加。
が、リンクエラーでまくり。

とりあえず、次のように設定すれば、リンクが通るようになった。
ライブラリへAdvapi32.lib fbxsdk_md.lib zlib_md.lib を追加。
LIBCMT を無視。
デバッグオプションに K_PLUGIN;K_FBXSDK;K_NODLLを追加。

ライブラリは次の3種あるが、どれを使えばいいのかよくわからない。
fbxsdk_mt.lib zlib_mt.lib
fbxsdk_ml.lib zlib_ml.lib
fbxsdk_md.lib zlib_md.lib
サンプルでは、すべてfbxsdk_mt.lib zlib_mt.lib が使われているが、同じようにmtのを追加したらエラーでまくりだった。
なんとなく、mdにしたら通った。
mlにしても、エラーがでまくり。

リリース版もfbxsdk_mt.lib zlib_mt.libを使用。
LIBCMT ではなく、LIBC を無視するように変更。
が、次のようなリンクエラーが出る。
error LNK2001: 外部シンボル ""public: void __thiscall wxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ)" は未解決です。
コードを見るとデバッグオプションから_MTをはずせば消せそうだが・・・
wxBase,wxUniv,wxWindowsのプロジェクトを確認すると_MTは入っていなかった。
そこで、_MTを入れてビルドし、ライブラリを作り直すが、やはり同様のエラーでビルドが通らない。
まあ、サンプルなどは普通に通るので、そういう問題ではなさそうだが。
コードの書き方の問題だろうか?
でも、デバッグだと通るのはなぞだ。
とりあえず、マルチスレッドではないので_MTをはずしておくことにした。
DLLだと_MTをつけても大丈夫なようなので、マルチスレッドにする時はdllを使うことにする。
としようとしたが、__HUGEが見つからないリンクエラーが消えない。
で、デバッグ版との違いを調べていたら、リンクするランタイムライブリがデバッグ版ではマルチスレッドデバッグ DLLになっていた。
リリース版はシングルスレッド。
そこで、リリース版もマルチスレッド DLLへ変更。
無視するライブラリをLIBCMTにしたらビルドが通った。

wxWidget の方はなんとなくわかったが、FBX SDKのm?の違いはなぞ。
ビルドの設定の違いだとは思うが・・・



投稿者 Takenori : 2005年03月25日 22:25




comments powered by Disqus
Total : Today : Yesterday : なかのひと