Cosa #pragma comment
significa in seguito?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Cosa #pragma comment
significa in seguito?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Risposte:
#pragma comment
è una direttiva del compilatore che indica Visual C ++ per lasciare un commento nel file oggetto generato. Il commento può quindi essere letto dal linker quando elabora i file oggetto.
#pragma comment(lib, libname)
dice al linker di aggiungere la libreria "libname" all'elenco delle dipendenze della libreria, come se fosse stata aggiunta nelle proprietà del progetto in Linker->Input->Additional dependencies
Vedi il commento #pragma su MSDN
Li ho sempre chiamati "direttive del compilatore". Indirizzano il compilatore a fare cose, ramificazioni, incluse librerie come mostrato sopra, disabilitando errori specifici ecc., Durante la fase di compilazione.
Le società di compilazione di solito creano le proprie estensioni per facilitare le loro funzionalità. Ad esempio, (credo) Microsoft ha avviato l'affare "#pragma once" ed era solo nei prodotti MS, ora non ne sono così sicuro.
Direttive Pragma Include "commento #pragma" nella tabella che vedrai.
HTH
Sospetto che GCC, ad esempio, abbia il proprio set di # pragma.
#pragma comment
significa.
Le direttive Pragma specificano le opzioni del compilatore del sistema operativo o della macchina specifica (x86 o x64 ecc.). Sono disponibili diverse opzioni. I dettagli sono disponibili in https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
ha questo formato.
Consultare https://msdn.microsoft.com/en-us/library/7f0aews7.aspx per i dettagli sui diversi tipi di commento.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Le righe di codice sopra includono i nomi (o percorso) della libreria che devono essere cercati dal linker. Questi dettagli sono inclusi come parte del record di ricerca nella libreria nel file oggetto.
Quindi, in questo caso, kernel.lib
e user32.lib
sono ricercati dal linker e incluso nel file eseguibile finale.
Le risposte e la documentazione fornite da MSDN sono le migliori, ma vorrei aggiungere un caso tipico che uso molto che richiede l'uso di #pragma comment
inviare un comando al linker al momento del collegamento, ad esempio
#pragma comment(linker,"/ENTRY:Entry")
dì al linker di cambiare il modulo del punto di ingresso WinMain()
in Entry()
dopo il quale CRTStartup
andare a trasferire controllerEntry()
Linker -> General -> Additional Library Directories
)?