Visual C++:解除方法は特定のリンカーの警告?
-
20-08-2019 - |
質問
私はライブラリーを使用してからCGALするリンクのステージのmyコード作成作多くのリンクを警戒す。
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
い方は、offにしてこの特定のリンカー警告下Visual C++/Studio2008?
注意のことがまったくありませんが、制御、外部CGAL)図書館を利用しています。できません/詳細を取得したいへの再コンパイルを伴外部の図書館があります。そのため、固定のメッセージです。
解決
追加のリンカオプションとして以下を追加します:
/ignore:4099
これはプロパティ - である>リンカー - >コマンドライン
他のヒント
更新2018-10-16
される、VS2013年、この警告を無効にできるようにした。のコメント@マーク拐.
独自の回答
できない無効にする特定の警告が表示されます。
による Intel-チャペル の4099警告として扱われものですが、無視できない場合も使用せ/wx(取扱警告としての誤差を無視し、指定された警告その他の状況)
こちらは関連するテキストからのリンク:
なUnignorable警告
一部の警告数、仕様に/を無視するオプション 受け入れが必ずしもた。きの警告が発生 中/wxオプションが設定されていない、その後の警告メッセージが 表示される場合があ/wxオプションが活躍し、その後の警告 無視されます。その場合は警告とは重要と考えられるが十分な オーバーライドする試みで無視でない場合、ユーザーでほっと一息つける 高価格unignoredの下方修正を発表している。
以下の警告数は影響を受け:
4200, 4203, 4204, 4205, 4206, 4207, 4208, 4209, 4219, 4231 and 4237
(レコードの場合、スレッドは、MSDNフォーラムに消える前に) あなたは通常、(それが無効にすることはできません(そう/ wd4099が動作しません)警告のリスト上にあるので、(少なくともVS2010の下で)警告を無効にしますが、何を代わりに行うことができますことは、パッチLINK.EXEであることはできませんC:\プログラムファイル(x86の)\のMicrosoft Visual Studioの10.0 \ VC \ビン\のLINK.EXEが)からそれを除去するためのリストは述べています。ハマーのような音、私は知っています。これは、しかし働きます。
たとえば、あなたは、4099のために03 10(4099用リトルエンディアン)を読み込み、存在しないFF 00(とそれを置き換えるバイナリエディタ、五島ライン15A0とのオープンLINK.EXEを警告を削除したい場合。 )
他人の利益のために、私はしかし、私は私が何をしたかなどが思います。
あなたは(私の場合は2010)のVisual Studioを取得することはできませんので、LNK4204警告を無視する、私のアプローチは、それが何を望むかを与えることだった:PDBファイルを。私は私の場合は、オープンソースのライブラリを使用していたとして、私はすでに、PDBファイルを作成するコードを持っています。
私の場合はvc100.pdb:しかし、デフォルトでは、PDFのすべて同じものをファイルに名前を付けることです。 あなたは一人ひとりの.libのための.pdbを必要とするように、これはあなたが約20静的な.libファイルを作成しますImageMagikにのようなものを、使用している場合は特に、問題を作成します。あなたは(アプリケーションのリンカリファレンスからのライブラリにリンクするもの)と同じものと呼ばれるすべての20個の.pdbファイルを持つ一つのディレクトリに20個のlibファイルを持っていないことができます。
私のソリューションは行くと私の静的ライブラリファイルを再構築、およびプロジェクトに関しての.pdbファイルに名前を付けるためにVS2010を設定することでした。このように、それぞれの.libは、同様の名前の.pdbを取得し、あなたが使用するようにプロジェクトのためにひとつのディレクトリにLIBSとのPDBのすべてを置くことができます。
"デバッグ" configuratonためだから、私が編集した
のプロパティ - >構成プロパティ - > C / C ++ - >出力ファイル] - > [プログラムデータベースファイル名の
から$(IntDir)のVC $(PlatformToolsetVersion).PDB
以下の値になるようにます:
の $(OUTDIR)VC $(PlatformToolsetVersion)D $(プロジェクト名).PDB の
今すぐではなく、どこかに中間ディレクトリで、.PDBファイルは.libファイルも書かれている、そして最も重要なのは、それらはD + のプロジェクト名の接尾辞で命名された出力ディレクトリに書き込まれますの。これは、各ライブラリのプロジェクトは、プロジェクトの.libとプロジェクト固有の.PDBをproduduces意味ます。
私は、今のファイル.LIB私のリリースのすべてをコピーすることができるよ私の.libファイルのデバッグと私の開発システム上の1つの場所に.PDBファイル、デバッグ、およびデバッグモードでそのサードパーティのライブラリを使用するプロジェクト、それはデバッグモードで必要とPDBファイルがあります。
私は無視/疑うVC6のLINK.EXEオプションです。 VS2005とVS2008のリンカのためにそこには利用できるオプションを無視/文書化ませんが、リンカは単に「/無視:XXX」無視見える。オプション、エラーなしと全く効果が
PDBファイルは通常、デバッグ情報を格納するために使用されます。ターゲット・オブジェクト・ファイルをリンクする際に、ファイルがvc80.pdb
見つからないため、この警告は、おそらく原因です。ここをLNK4099 上のMSDNのエントリを読んでください。
また、あなたはデバッグ情報のフィールドを生成します>プロジェクトプロパティ]> [リンカ]> [デバッグからデバッグ情報の生成をオフにすることができます。
EDIT:多分<のhref = "http://pulse.mat.ucsb.edu/projects/luaAV/browser vc80 / Visual Studio 2005のが、CGALライブラリのVisual Studioの2008 / VC90バージョンを(使用していません/補助/ CGAL /窓/ GMP / libに "REL = "nofollowをnoreferrer"> の<からのhref =" http://pulse.mat.ucsb.edu/projects/luaAV/browser/auxiliary/cgal/窓」のrel = "nofollowをnoreferrer">ここを)。
またそう、/ Z7でコンパイルすることができ PDBを使用する必要はありませんか、 あなたの場合は/ DEBUGリンカオプションを削除 オブジェクトのための.pdbファイルを持っていません あなたがリンクされます。
できない無効化リンカー警告4099している@ジョンWeldon.
きを再構築からプロジェクトの構成変わります。くつかの方法があります:
- 保存PDBファイルをデバッグ情報のデータを同じフォルダが保存されます。libファイルです。設定値"$(OutDir)$(TargetName).pdb"のプロパティ->C/C++>の出力ファイル-プログラムデータベースファイル名
- 保存デバッグ情報。libファイルです。設定値"C7対応/Z7)"プロパティ->C/C++>一般->デバッグ情報のフォーマット
- Disable世代のデバッグ情報をこの図書館があります。削除値からのプロパティ->C/C++>一般->デバッグ情報のフォーマット