Ich verwende eine Bibliothek von CGAL, die während der Verknüpfungsphase meiner Code-Kompilierung viele Verknüpfungswarnungen dieser Form erzeugt:
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
Wie deaktiviere ich diese spezielle Linker-Warnung unter Visual C ++ / Studio 2008?
Beachten Sie, dass ich keine Kontrolle über die externe (CGAL) Bibliothek habe, die ich verwende. Ich kann / möchte nicht mit dem Neukompilieren der externen Bibliothek beginnen. Daher die Notwendigkeit, die Nachrichten an meinem Ende zu reparieren.
visual-studio
visual-c++
linker
warnings
cgal
Ashwin Nanjappa
quelle
quelle
/ignore:4099
funktioniert gut in Visual Studio 10 mit C ++. Ich habe die Warnung erhaltenLNK4099: PDB 'vc100.pdb' was not found with 'gtest_main-mdd.lib(gtest_main.obj)
und es geschafft, sie auf diese Weise zu entfernen.Antworten:
Fügen Sie Folgendes als zusätzliche Linkeroption hinzu:
Dies ist in Eigenschaften-> Linker-> Befehlszeile
quelle
Update 2018-10-16
Berichten zufolge kann diese Warnung ab VS 2013 deaktiviert werden. Siehe den Kommentar von @Mark Ransom.
Ursprüngliche Antwort
Sie können diese spezielle Warnung nicht deaktivieren.
Laut Geoff Chappell wird die 4099-Warnung so behandelt, als wäre sie zu wichtig, um sie zu ignorieren, selbst wenn sie in Verbindung mit / wx verwendet wird (was Warnungen als Fehler behandeln und die angegebene Warnung in anderen Situationen ignorieren würde).
Hier ist der relevante Text aus dem Link:
quelle
(Für den Datensatz und bevor der Thread in den msdn-Foren verschwindet) Sie können die Warnung nicht deaktivieren (zumindest unter VS2010), da sie in der Liste der Warnungen aufgeführt ist, die nicht deaktiviert werden können (daher funktioniert / wd4099 nicht). Sie können jedoch stattdessen die Datei link.exe (normalerweise C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ link.exe) patchen, um sie aus dieser Liste zu entfernen. Klingt wie ein Presslufthammer, ich weiß. Es funktioniert aber.
Wenn Sie beispielsweise die Warnung für 4099 entfernen möchten, öffnen Sie link.exe mit einem Hex-Editor, gehen Sie zu Zeile 15A0 mit der Aufschrift 03 10 (Little Endian für 4099) und ersetzen Sie sie durch FF 00 (die nicht vorhanden ist).
quelle
Zum Wohle anderer würde ich einschließen, was ich getan habe.
Da Sie Visual Studio (in meinem Fall 2010) nicht dazu bringen können, die LNK4204-Warnungen zu ignorieren, bestand mein Ansatz darin, ihm das zu geben, was er wollte: die PDF-Dateien. Da ich in meinem Fall Open Source-Bibliotheken verwendet habe, habe ich den Code, der die PDF-Dateien erstellt.
ABER standardmäßig werden alle PDF-Dateien gleich benannt: in meinem Fall vc100.pdb. Da Sie für jede .lib eine .pdb benötigen, entsteht ein Problem, insbesondere wenn Sie ImageMagik verwenden, mit dem etwa 20 statische .lib-Dateien erstellt werden. Sie können nicht 20 lib-Dateien in einem Verzeichnis haben (von denen der Linker Ihrer Anwendung auf Links in den Bibliotheken verweist) und alle 20 .pdb-Dateien haben dasselbe aufgerufen.
Meine Lösung bestand darin, meine statischen Bibliotheksdateien neu zu erstellen und VS2010 so zu konfigurieren, dass die PDF-Datei in Bezug auf das PROJEKT benannt wird. Auf diese Weise erhält jede .lib eine ähnlich benannte .pdb, und Sie können alle LIBs und PDBs in einem Verzeichnis ablegen, damit Ihr Projekt sie verwenden kann.
Für die "Debug" -Konfiguration habe ich Folgendes bearbeitet:
Eigenschaften-> Konfigurationseigenschaften -> C / C ++ -> Ausgabedateien -> Name der Programmdatenbank von
$ (IntDir) vc $ (PlatformToolsetVersion) .pdb
der folgende Wert sein:
$ (OutDir) vc $ (PlatformToolsetVersion) D $ (Projektname) .pdb
Anstatt irgendwo im Zwischenverzeichnis werden die PDF-Dateien in das Ausgabeverzeichnis geschrieben, in das auch die LIB-Dateien geschrieben werden, und vor allem werden sie mit dem Suffix D + Projektname benannt . Dieses Mittel jeder Bibliothek Projekt produduces ein Projekt Lib und eine projektspezifische PDB.
Ich kann jetzt alle meine Release-LIB-Dateien, meine Debug-LIB-Dateien und die Debug-PDF-Dateien an einen Ort auf meinem Entwicklungssystem kopieren. Das Projekt, das diese Drittanbieter-Bibliothek im Debug-Modus verwendet, verfügt über die PDF-Datei Dateien, die es im Debug-Modus benötigt.
quelle
Ich vermute / ignorieren ist eine VC6 link.exe Option. Für den Linker von VS2005 und VS2008 ist keine Option zum Dokumentieren / Ignorieren verfügbar. Der Linker sieht jedoch so aus, als würde die Option "/ ignore: XXX" ignoriert, kein Fehler und keine Auswirkung.
quelle
Die PDB-Datei wird normalerweise zum Speichern von Debug-Informationen verwendet. Diese Warnung wird wahrscheinlich verursacht, weil die Datei
vc80.pdb
beim Verknüpfen der Zielobjektdatei nicht gefunden wird. Lesen Sie den MSDN - Eintrag auf LNK4099 hier .Alternativ können Sie die Generierung von Debug-Informationen über das Feld Projekteigenschaften> Linker> Debugging> Debug-Informationen generieren deaktivieren.
quelle
BEARBEITEN: Verwenden Sie nicht vc80 / Visual Studio 2005, sondern Visual Studio 2008 / vc90-Versionen der CGAL-Bibliothek (möglicherweise von hier aus ).
Linker Tools Warnung LNK4099 :
quelle
Sie können die Linker-Warnung 4099 nicht deaktivieren, wie @ John Weldon sagte.
Sie sollten die Bibliothek mit einigen Änderungen an der Projektkonfiguration neu erstellen. Sie haben mehrere Möglichkeiten:
quelle