Was #pragma comment
bedeutet im Folgenden?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
c++
visual-c++
macros
pragma
user198729
quelle
quelle
Linker -> General -> Additional Library Directories
)?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.
quelle
#pragma comment
bedeutet.Diese verknüpfen die in MSVC ++ ausgewählten Bibliotheken.
quelle
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
unduser32.lib
werden vom Linker gesucht und in die endgültige ausführbare Datei aufgenommen.quelle
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 sendenWeisen Sie den Linker an, das Einstiegspunktformular so zu ändern
WinMain()
,Entry()
dass danach dieCRTStartup
Steuerung übertragen wirdEntry()
quelle