« FBX SDKを追加してみる | メイン | PerlMagickでMPEGファイルを作る »
2005年03月27日
吉里吉里2/KAG3ムービー拡張日誌:: 共有ライブラリ
Tweet @jin1016をフォローうちでビルドした krmovie.dllでmsvcr71.dllがないとエラーが出ると言われたのでkrmovieのプロジェクトの設定を調査。
問題なさそうなので、BaseClassesのプロジェクトを調べると、プロジェクトの設定のコード生成のランタイム ライブラリ がマルチスレッド DLLになっていた。
マルチスレッドへ変更にし、ビルド後、krmovieの方もリビルド。
特定のライブラリの無視でLIBCMTD ( LIBCMT ) を設定しなくても良くなったようなので、設定からはずした。
たぶん、DirectX9に変えた時に、DX9の標準設定がそうなっていたのだろう。
確か、DX8を使っていた時は問題なかったはず。
msvcrt.dll と msvcr71.dll の相違点 |
MSDN C ランタイム ライブラリ より引用。
msvcr71.dll を使うように設定した方が良いかとも思ったが、アプリと共に配布し同じディレクトリに入れないといけないのならスタティックの方を使った方が良いかな。
にしても、なんか矛盾していると言うか、おかしな話と言うか。
DX9のDirectShowのBascClassesのデフォルトでmsvcr71.dll を使うようにしているので、msvcr71.dll はある種必須。
しかも、DirectShowのフィルタの.axファイルなどは、ほぼシステム ディレクトリに入るだろう。
つまり、システム ディレクトリ にmsvcr71.dll をコピーすることになるのではないか?
なんか変な話と言うか、不親切と言うか。
VCなどをインストールしていないマシンのシステム ディレクトリにはmsvcr71.dllが普通に入っていた。他にも71が付くDLLがいっぱい。
インストール時にシステム ディレクトリ にコピーするアプリはわんさかありそう。
ま、問題なく動いているからいいんだけどね。
それはともかく、この修正で本当にmsvcr71.dll が必要なくなったかどうか調べるにはクリーンインストールしたマシンが必要だな。
面倒だけど、使っていない古いマシンに入れるか。
投稿者 Takenori : 2005年03月27日 00:10
comments powered by Disqus