Co #pragma comment
w dalszej części oznacza?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
c++
visual-c++
macros
pragma
user198729
źródło
źródło
Linker -> General -> Additional Library Directories
)?Zawsze nazywałem je „dyrektywami kompilatora”. Kierują kompilatorem do wykonywania różnych czynności, rozgałęziania, w tym bibliotek, takich jak pokazano powyżej, wyłączania określonych błędów itp., Podczas fazy kompilacji.
Firmy kompilujące zwykle tworzą własne rozszerzenia, aby ułatwić korzystanie z ich funkcji. Na przykład (jak sądzę) Microsoft rozpoczął transakcję „#pragma Once” i dotyczyło to tylko produktów MS, teraz nie jestem tego taki pewien.
Dyrektywy Pragmy Zawiera "komentarz #pragma" w tabeli, którą zobaczysz.
HTH
Podejrzewam, że na przykład GCC ma swój własny zestaw # pragmy.
źródło
#pragma comment
to znaczy.Te łącza w bibliotekach wybranych w MSVC ++.
źródło
Dyrektywy Pragma określają opcje kompilatora specyficzne dla systemu operacyjnego lub komputera (x86 lub x64 itp.). Dostępnych jest kilka opcji. Szczegóły można znaleźć pod adresem https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
ma ten format.Szczegółowe informacje na temat różnych typów komentarzy można znaleźć pod adresem https://msdn.microsoft.com/en-us/library/7f0aews7.aspx .
#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")
Powyższe wiersze kodu zawierają nazwy bibliotek (lub ścieżki), które mają być przeszukiwane przez konsolidator. Te szczegóły są zawarte jako część rekordu wyszukiwania biblioteki w pliku obiektowym.
Tak więc w tym przypadku
kernel.lib
iuser32.lib
są przeszukiwane przez konsolidator i dołączane do końcowego pliku wykonywalnego.źródło
Odpowiedzi i dokumentacja dostarczona przez MSDN jest najlepsza, ale chciałbym dodać jeden typowy przypadek, z którego często korzystam, który wymaga użycia na przykład
#pragma comment
do wysłania polecenia do linkera w czasie łączapowiedz linkerowi, aby zmienił formularz punktu wejścia,
WinMain()
abyEntry()
po tym nastąpiłoCRTStartup
przeniesienie kontrolera doEntry()
źródło