VCで他のLibをリンクするとこんなメッセージが出る。 LINK : warning LNK4098: defaultlib "msvcrtd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください LINK : warning LNK4098: defaultlib "nafxcwd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください LINK : warning LNK4098: defaultlib "libcmtd.lib" は他のライブラリの使用と競合しています; /NODEFAULTLIB:library を使用してください よく、「スタティックライブラリでMFCを使用」と出ていたので、「共有DLLでMFCを使用」に変更していたが、ここでなぜ出るか少しだけ調べて見る。 ランタイムライブラリがVisualStdioでシングルスレッド、マルチスレッド(DLL)、マルチスレッドで3種類。デバッグ、リリース版で計6種類用意されている。 ちなみに、 MSVCRT.lib マルチスレッド(DLL) Release /MD(コンパイルオプション) MSVCRTd.lib マルチスレッド(DLL) Debug /MDd LIBCMT.lib マルチスレッド Release /MT LIBCMTd.lib マルチスレッド Debug /MTd LIBC.lib シングルスレッド Release /ML LIBCd.lib シングルスレッド Debug /MLd となっている。 コンパイラーオプションは、「プロジェクトの設定」→タブ「C/C++」→カテゴリ「コード生成」で確認できる。 ライブラリで作成したときにリンクしたランタイムライブラリと現在のアプリで使用しているランタイムで異なっているためにエラーが出ているようだ。 ライブラリのソースコードがあれば、コンパイルオプションをアプリと同じオプションに変え作成しなおせば直りそうです。しかし、ソースコードがなければ、ライブラリのオプションにアプリを合わせないとだめかぁ。。。しかし、アプリが「マルチスレッド」、...
コメント