MSCVRT ライブラリがリンク時に競合を生成するのはなぜですか?[重複]

StackOverflow https://stackoverflow.com/questions/2553397

質問

この質問にはすでに答えがあります:

私は Visual C++ 2008 でプロジェクトを構築しています。これは、静的 C++ クラス ライブラリのサンプル MFC ベース アプリであり、近々自分のプロジェクトで使用する予定です。デバッグ構成を構築しているときに、次のような結果が得られます。

警告 LNK4098:defaultlib 'MSVCRT' は他のライブラリの使用と競合します。/NODEFAULTLIB:ライブラリを使用します

推奨オプション (デバッグ構成のプロジェクト リンカー設定の [特定のライブラリを無視する] フィールドに「msvcrt」を追加) を使用すると、プログラムはリンクされ、正常に実行されます。ただし、なぜこの競合が発生したのか、なぜ重要なライブラリを無視しなければならないのか、後で問題が予想される場合は無視を追加した場合、または追加しなかった場合はどうなるのかを調べたいと思います(とにかくプログラムはビルドされます)。

同時に、リリース設定では次の警告が表示されます。

警告 LNK4075:'/OPT:ICF' の指定により '/EDITANDCONTINUE' を無視します
警告 LNK4098:defaultlib 'MSVCRTD' は他のライブラリの使用と競合します。/NODEFAULTLIB:ライブラリを使用します

「D」という接尾辞は、これが vc++ ランタイムのデバッグ バージョンであることを意味していると思いますが、なぜ今回これが使用されるのかはわかりません。とにかく、「msvcrtd」を無視フィールドに追加すると、次の形式のリンク エラーが大量に発生します。

エラーLNK2001:未解決の外部シンボル __imp___CrtDbgReportW

ご洞察をいただければ幸いです。

役に立ちましたか?

解決

あなたが(プロジェクトのプロパティでC++ ->Code Generation->Runtime Library設定)VC ++ランタイムの別のバージョンを使用して、静的ライブラリとリンクする際に

これは通常起こります。

他のヒント

私は(うっかり)RTLの異なる味を混合されたとき、これは通常、私に起こった、デバッグとリリースまたはMTとST(あなたのケースであると思われるもの)などがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top