Was #pragma comment
bedeutet im Folgenden?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Was #pragma comment
bedeutet im Folgenden?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Antworten:
#pragma comment
ist eine Compiler-Direktive, die Visual C ++ angibt, einen Kommentar in der generierten Objektdatei zu hinterlassen. Der Kommentar kann dann vom Linker gelesen werden, wenn er Objektdateien verarbeitet.
#pragma comment(lib, libname)
Weist den Linker an, die Bibliothek 'libname' zur Liste der Bibliotheksabhängigkeiten hinzuzufügen, als hätten Sie sie in den Projekteigenschaften unter hinzugefügt Linker->Input->Additional dependencies
Siehe # Pragma-Kommentar zu MSDN
Ich habe sie immer "Compiler-Direktiven" genannt. Sie weisen den Compiler an, während der Kompilierungsphase Dinge zu tun, zu verzweigen, einschließlich der oben gezeigten Bibliotheken, bestimmte Fehler zu deaktivieren usw.
Compiler-Unternehmen erstellen normalerweise ihre eigenen Erweiterungen, um ihre Funktionen zu vereinfachen. Zum Beispiel (glaube ich) hat Microsoft den Deal "#pragma einmal" gestartet und es war nur in MS-Produkten, jetzt bin ich mir nicht so sicher.
Pragma-Richtlinien Die Tabelle enthält "#pragma comment".
HTH
Ich vermute, dass GCC zum Beispiel einen eigenen Satz von # Pragmas hat.
#pragma comment
bedeutet.
Pragma-Anweisungen geben betriebssystem- oder maschinenspezifische Compileroptionen (x86 oder x64 usw.) an. Es stehen mehrere Optionen zur Verfügung. Details finden Sie unter https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
hat dieses Format.
Weitere Informationen zu verschiedenen Kommentartypen finden Sie unter https://msdn.microsoft.com/en-us/library/7f0aews7.aspx .
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Die obigen Codezeilen enthalten die Bibliotheksnamen (oder den Pfad), nach denen der Linker suchen muss. Diese Details sind Teil des Bibliothekssuchdatensatzes in der Objektdatei.
Also, in diesem Fall kernel.lib
und user32.lib
werden vom Linker gesucht und in die endgültige ausführbare Datei aufgenommen.
Die Antworten und die Dokumentation von MSDN sind die besten, aber ich möchte einen typischen Fall hinzufügen, bei dem ich häufig #pragma comment
einen Befehl verwende, um beispielsweise zur Verbindungszeit einen Befehl an den Linker zu senden
#pragma comment(linker,"/ENTRY:Entry")
Weisen Sie den Linker an, das Einstiegspunktformular so zu ändern WinMain()
, Entry()
dass danach die CRTStartup
Steuerung übertragen wirdEntry()
Linker -> General -> Additional Library Directories
)?