田中と申します。WinXPsp3+VC++6.0sp6にてプログラムしています。
Debug設定でのビルド時に以下のようなwarningが表示され、デバッグモード
での実行時にエラーが生じるようになりました。
//表示されたwarning
LINK : warning LNK4098: defaultlib "mfc42.lib" は他のライブラリの使用と競
合しています; /NODEFAULTLIB:library を使用してください
LINK : warning LNK4098: defaultlib "mfcs42.lib" は他のライブラリの使用と
競合しています; /NODEFAULTLIB:library を使用してください
LINK : warning LNK4098: defaultlib "msvcrt.lib" は他のライブラリの使用と
競合しています;/NODEFAULTLIB:library を使用してください
ネットで検索したところ、一旦Release設定でビルドした後再度Debug設定で
ビルドするときに生じるらしいという記述を見つけることは出来たのです
が、それ以上の詳しい記事を見つけることが出来ません(私の場合もRelease
でのビルド後に生じるようになりました)。
Release設定でのビルド後に、再度Debug設定で正常にビルドすることは出来
ないのでしょうか。
解決策をご存知の方がおられましたら教えていただけないでしょうか。
よろしくお願いいたします。
そんなことはない。絶対にない。ウチでは何百回も Release-Debug 切り替えてるし何一つ問題ない。
Debug と Release の両方で正しくコンパイル・リンクできるようプロジェクトを作ればいい。
自作ライブラリとか他社製ライブラリとか使っている場合には
「正しい指定」
をきっちり行う必要があるよ。
# いまどき VC++6 かよ・・・
俺も経験ない。
Debug設定でmfc42.libとリンクしたがるのか。
mfc42d.libじゃなかったっけ?
うーん、長年VC6使ってましたけど、経験ありませんね。
出力先の設定とかが一緒になっているのにリビルドしてないとか…。
プロジェクトの設定が変わってないか確認してみた方がいいかもです。
Debug 構成なのに mfc42.lib を要求している obj または lib がいる
→ obj であることは考えにくいので lib だと思われる
→ #pragma comment や プロジェクトの設定で 3rdparty lib を追加しているが、
Debug モードなのに Release 用の lib を追加している=間違った指定をしている
という推測がされるわけで、「正しい指定」しろ、という結論になるわけだ。
これ以上のコメントは元発言者から詳細補足がないと無理。
#pragma comment でライブラリを指定するには
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200307/03070025.txt
こんなめんどくさい小細工が必要だったりするわけだな。
tetrapodさん、wclrpさん、みいさんResをありがとうございます。
tetrapodさんのご指摘の中の
>自作ライブラリとか他社製ライブラリとか使っている場合には
の部分に思い当たり、Release時にReleaseバージョンのライブラリを使用し
ていた(Debaug時にはDebugバージョンのライブラリを使用していた)ことを思
い出し、Debugバージョンのライブラリに戻したところ正常にビルドできました。
皆さんどうもありがとうございました。
ツイート | ![]() |