VC++2010においてレギュラーDLL(Aとする)を作成しており、そのDLLからは他のDLLがインポートされています。
Aのビルドは行われるのですが、AをテストMFCプロジェクトにインポートして使用するとdllint.cppの703行目でDebug Assertionが出て怒られます。Aに依存しているDLLは全てAと同じディレクトリに配置しています。
これはどのように解決したらよいでしょうか。また、問題としてなにが考えられるでしょうか。
上記dllint.cppをdllinit.cppと修正して読み替えてください。
編集 削除そのAを呼び出す元のEXEも同じディレクトリにあるのでしょうか?
EXEがDLLを検索する場合、環境変数のPATHを使って探しますので、
PATHにAのあるディレクトリ設定が無いか、EXEとAが同じディレクトリ
に無いか・・・です。
以上。
DLLはEXEと同じパス、若しくはDebugモード時に優先して検索されるプロジェクトファイルのパスにあり、レギュラーDLLではなくWin32プロジェクトでアプリケーションタイプをDLL(MFC使用)にして同じようにサードパーティライブラリを動的リンクさせて、他のプログラムからAをインポートするとエラーが出ません。
レギュラーDLLはインポートの手順が特殊なのでしょうか。
どうやらDLL側でインポートしているboostライブラリがホストプログラム側でインポートしているboostライブラリとぶつかっているようです。DLL側でboostを使用せずにビルドし、ホストプログラムでインポートしたらdllinit.cppでDebug Assertionが出なくなりました。
DLL側でホストプログラムと同じバージョンのboostを使用したい場合はDLL版のboostを使うしか無いのでしょうか。