133

コード コンパイルのリンク段階で、次の形式のリンク警告が多数生成される CGAL のライブラリを使用しています。

warning LNK4099: PDB 'vc80.pdb' was not found with 'gmp-vc80-mt-sgd.lib' or at 'vc80.pdb'; linking object as if no debug info

Visual C++/Studio 2008 でこの特定のリンカー警告をオフにするにはどうすればよいですか?

私が使用している外部 (CGAL) ライブラリを制御できないことに注意してください。外部ライブラリを再コンパイルすることはできません/したくありません。したがって、最後にメッセージを修正する必要があります。

4

9 に答える 9

113

追加のリンカー オプションとして次を追加します。

 /ignore:4099

これは、プロパティ->リンカー->コマンドラインにあります

于 2009-03-19T13:43:11.530 に答える
49

2018-10-16 更新

報告によると、VS 2013 の時点で、この警告は無効にできます。@Mark Ransom のコメントを参照してください。

元の回答

その特定の警告を無効にすることはできません。

Geoff Chappellによると、4099 警告は、/wx と組み合わせて使用​​しても、無視するには重要すぎるかのように扱われます (警告をエラーとして扱い、他の状況では指定された警告を無視します)。

リンクからの関連テキストは次のとおりです。

無視できないほどの警告

一部の警告番号については、/ignore オプションでの指定は受け入れられますが、必ずしも実行されるとは限りません。/wx オプションがアクティブでないときに警告が発生した場合、警告メッセージは引き続き表示されますが、/wx オプションがアクティブな場合、警告は無視されます。あたかも警告が無視しようとする試みを無効にするのに十分重要であると考えられているかのようですが、ユーザーが無視されない警告にあまりにも高い代償を払っている場合はそうではありません。

次の警告番号が影響を受けます。

4200, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4219, 4231 and 4237
于 2009-09-25T18:33:00.357 に答える
10

(記録のために、msdnフォーラムでスレッドが消える前に)無効にできない警告のリストにあるため、警告を無効にすることはできません(少なくともVS2010では)(/ wd4099は機能しません) 、しかし代わりにできることは、link.exe(通常はC:\ Program Files(x86)\ Microsoft Visual Studio 10.0\VC\bin\link.exe)にパッチを当てて、上記のリストから削除することです。削岩機のように聞こえます、私は知っています。しかし、それは機能します。

たとえば、4099 の警告を削除する場合は、link.exe を 16 進エディターで開き、03 10 (4099 のリトルエンディアン) を読み取る 15A0 行に移動し、FF 00 (存在しない) に置き換えます。

于 2013-06-24T09:01:29.313 に答える
3

/ignore は VC6 の link.exe オプションだと思います。VS2005 および VS2008 のリンカでは、文書化された /ignore オプションは利用できませんが、リンカは "/ignore:XXX" オプションを無視するように見え、エラーも効果もありません。

于 2009-05-04T07:49:55.060 に答える
1

PDBファイルは通常、デバッグ情報を格納するために使用されます。vc80.pdbこの警告は、ターゲットオブジェクトファイルをリンクするときにファイルが見つからないことが原因である可能性があります。ここでLNK4099のMSDNエントリを読んでください。

または、[プロジェクトのプロパティ]>[リンカー]>[デバッグ]>[デバッグ情報の生成]フィールドからデバッグ情報の生成をオフにすることもできます。

于 2009-03-19T10:37:58.353 に答える
1

編集:vc80 / Visual Studio 2005を使用しないでください。ただし、Visual Studio 2008 / vc90バージョンのCGALライブラリ(おそらくここから )を使用してください。

リンカーツール警告LNK4099

/ Z7を使用してコンパイルすることもできるため、pdbを使用する必要はありません。リンクするオブジェクトの.pdbファイルがない場合は、/DEBUGリンカーオプションを削除してください。

于 2009-03-19T10:39:46.307 に答える
1

@John Weldonが言ったように、リンカー警告4099を無効にすることはできません。

プロジェクト構成をいくつか変更して、ライブラリを再構築する必要があります。いくつかのオプションがあります:

  • デバッグ情報を含む PDB ファイルを保存する場所は、.lib ファイルを保存するフォルダーと同じです。値 "$(OutDir)$(TargetName).pdb" を [プロパティ] -> [C/C++] -> [出力ファイル] - [プログラム データベース ファイル名] に設定します。
  • デバッグ情報を .lib ファイルに保存します。値「C7 互換 (/Z7)」を [プロパティ] -> [C/C++] -> [一般] -> [デバッグ情報形式] に設定します。
  • このライブラリの生成デバッグ情報を無効にします。Properties->C/C++->General->Debug Information Format から値を削除します
于 2012-07-06T13:59:21.940 に答える