Co #pragma comment
w dalszej części oznacza?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Co #pragma comment
w dalszej części oznacza?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Odpowiedzi:
#pragma comment
to dyrektywa kompilatora, która wskazuje programowi Visual C ++ na pozostawienie komentarza w wygenerowanym pliku obiektu. Komentarz może następnie zostać odczytany przez konsolidator podczas przetwarzania plików obiektowych.
#pragma comment(lib, libname)
informuje konsolidator, aby dodał bibliotekę 'libname' do listy zależności bibliotek, tak jakbyś dodał ją we właściwościach projektu w Linker->Input->Additional dependencies
Zobacz komentarz #pragma w witrynie MSDN
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.
#pragma comment
to znaczy.
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
i user32.lib
są przeszukiwane przez konsolidator i dołączane do końcowego pliku wykonywalnego.
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 łącza
#pragma comment(linker,"/ENTRY:Entry")
powiedz linkerowi, aby zmienił formularz punktu wejścia, WinMain()
aby Entry()
po tym nastąpiło CRTStartup
przeniesienie kontrolera doEntry()
Linker -> General -> Additional Library Directories
)?