4

Visual C++ 2008 でプロジェクトを作成しています。これは、自分のプロジェクトですぐに使用する静的 C++ クラス ライブラリ用の MFC ベースのアプリの例です。デバッグ構成を構築しているときに、次のようになります。

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

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

同時に、リリース構成は次のように警告します。

警告 LNK4075: '/OPT:ICF' 仕様により '/EDITANDCONTINUE' を無視します
警告 LNK4098: デフォルト ライブラリ 'MSVCRTD' は他のライブラリの使用と競合します。/NODEFAULTLIB:ライブラリを使用

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

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

どんな洞察も大歓迎です。

4

2 に答える 2

3

C++ ->Code Generation->Runtime Libraryこれは通常、別のバージョンの VC++ ランタイム (プロジェクト プロパティの設定)を使用するスタティック ライブラリに対してリンクする場合に発生します。

于 2010-03-31T13:50:37.467 に答える
0

これは通常、(あなたの場合のように) Debug と Release や MT と ST のように、RTL のさまざまなフレーバーを (うっかり) 混ぜていたときに起こりました。

于 2010-03-31T13:47:36.200 に答える