2013-06-21 28 views
5

Wenn ich eine nicht-Standard-Bibliothek in C++ verwende, muss ich den Bibliotheksnamen in Linker hinzufügen -> Eingabe -> zusätzliche Abhängigkeiten. Aber die Alternative ist zu schreibenPragma Kommentar C++

#pragma comment(lib , "library name") 

Sind diese beiden Methoden völlig gleich?

+9

Die zweite wird nur tatsächlich auf MSVC funktionieren. Sie haben immer noch den Vorteil, dass sie nur bei denjenigen ignoriert werden müssen, die sie nicht unterstützen, obwohl Sie sich darüber im Klaren sind, dass zumindest GCC eine Warnung gibt, vorausgesetzt, Sie schalten diese ein. – chris

+0

Ich denke, die Annahme ist "auf Windows msvc", oder zumindest sollte – 4pie0

+0

Diese Frage sollte wahrscheinlich neu markiert werden, um anzuzeigen, dass es spezifisch für MSVC ist. Ich bin mir nicht ganz sicher, welches Tag ich verwenden soll. –

Antwort

5

Sie sind nicht.

Das genannte Pragma fügt eine defaultlib hinzu. Die Option eine obligatorische Lib für die Linker-Zeile.

Letztere wird verarbeitet, egal was, und Sie erhalten einen Fehler, wenn es fehlt. Die Standardbibliothek wird im Hintergrund ignoriert, wenn sie nicht gefunden wird. Und die Verwendung der Optionen "ignore default libs" oder "ignore specific default lib" kann verwendet werden, um ihre Verwendung zu verwerfen, selbst wenn sie vorhanden ist.

+0

Das ist interessant. Das könnte nützlich sein, nehme ich an. – chris

0

Dies sind zwei Möglichkeiten, dasselbe zu tun. der Compiler teilt dem Linker mit, auf welche Bibliotheken er achten soll. #pragma comment hat auch andere Funktionen wie das Hinzufügen von Daten wie Compiler-Informationen oder anderer Metadaten zur Objektdatei.

#pragma Kommentar ist VC++ spezifisch.