C++/CLI プロジェクトが /ZI (編集と継続) を使用して静的ライブラリ プロジェクトを参照する場合の警告 LNK4075 質問する

C++/CLI プロジェクトが /ZI (編集と継続) を使用して静的ライブラリ プロジェクトを参照する場合の警告 LNK4075 質問する

Visual Studio 2012 ソリューションに次のプロジェクトがあります。

  • ネイティブ (なし/clr) 静的ライブラリ プロジェクト。Edit /ZIAnd Continue 用にコンパイルされています。
  • 上記の静的ライブラリを参照する C++/CLI DLL プロジェクト。

C++/CLI プロジェクトは次の警告とともにビルドされます。

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification

C++/CLI プロジェクトのリンカー オプションに /OPT:NOLBR が追加されると、警告は次のようになります。

warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/INCREMENTAL:NO' specification

C++/CLI プロジェクトの増分リンク設定を変更しようとしても、警告は変わりません (C++/CLI プロジェクトは増分リンクされません)。

C++/CLI プロジェクトでは Edit And Continue がサポートされていないため使用できないことは理解しています。確かに、静的ライブラリ プロジェクトで /ZI を /Zi (Edit And Continue を無効にする) に変更すると警告は表示されなくなりますが、そうすることはできません。そのライブラリの他の非 CLR コンシューマーは Edit And Continue を使用する必要があります。

静的ライブラリの Edit And Continue を無効にせずに (できれば静的ライブラリのネイティブ ユーザーと CLR ユーザー用に個別のビルド構成を維持せずに) この警告を取り除くにはどうすればよいですか? つまり、参照されている静的ライブラリに埋め込まれているディレクティブを無視するようにリンカーに要求する方法はありますか(ディレクティブを無視できる/EDITANDCONTINUEのとほぼ同じ方法)?/NODEFAULTLIB/DEFAULTLIB

私は最小限のVSソリューション説明した問題を再現します。

ベストアンサー1

'/OPT:LBR' 指定による

これは意味のないエラーメッセージです。リンカーオプションはARMバイナリにのみ有効です。これは単なるバグです。/OPT:NOLBRを使用すると、このバグがなくなり、本物警告。

これは十分に正確ですが、賞を獲得することはできません。静的ライブラリプロジェクトでEdit+Continueのサポートを要求しましたが、これは混合モードの.NETアセンブリでは利用できません。文書化されていない/IGNOREリンカーオプションは警告メッセージを抑制するために使用できますが、これは「無視できない警告」チャペル著。

静的ライブラリ プロジェクトを変更したくない限り、この警告を無視する必要があります。これはまったく無害です。/Zi で再コンパイルすると、この警告は表示されなくなります。

おすすめ記事