¿Qué #pragma comment
significa en lo siguiente?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
¿Qué #pragma comment
significa en lo siguiente?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Respuestas:
#pragma comment
es una directiva del compilador que indica que Visual C ++ debe dejar un comentario en el archivo objeto generado. El enlazador puede leer el comentario cuando procesa archivos de objetos.
#pragma comment(lib, libname)
le dice al enlazador que agregue la biblioteca 'libname' a la lista de dependencias de la biblioteca, como si la hubiera agregado en las propiedades del proyecto en Linker->Input->Additional dependencies
Ver comentario #pragma en MSDN
Siempre los he llamado "directivas de compilación". Dirigen al compilador a hacer cosas, ramificar, incluidas las bibliotecas como se muestra arriba, deshabilitar errores específicos, etc., durante la fase de compilación.
Las compañías compiladoras generalmente crean sus propias extensiones para facilitar sus funciones. Por ejemplo, (creo) Microsoft comenzó el acuerdo "#pragma una vez" y fue solo en productos MS, ahora no estoy tan seguro.
Directivas de Pragma Incluye "#pragma comment" en la tabla que verá.
HTH
Sospecho que GCC, por ejemplo, tiene su propio conjunto de # pragma.
#pragma comment
significa.
Las directivas de Pragma especifican las opciones del compilador del sistema operativo o de la máquina (x86 o x64, etc.). Hay varias opciones disponibles. Los detalles se pueden encontrar en https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
tiene este formato
Consulte https://msdn.microsoft.com/en-us/library/7f0aews7.aspx para obtener detalles sobre diferentes tipos de comentarios.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Las líneas de código anteriores incluyen los nombres de biblioteca (o ruta) que el vinculador debe buscar. Estos detalles se incluyen como parte del registro de búsqueda de biblioteca en el archivo objeto.
Por lo tanto, en este caso kernel.lib
y user32.lib
se buscan por el enlazador e incluido en el ejecutable final.
Las respuestas y la documentación proporcionada por MSDN son las mejores, pero me gustaría agregar un caso típico que uso mucho y que requiere el uso de #pragma comment
enviar un comando al enlazador en el momento del enlace, por ejemplo
#pragma comment(linker,"/ENTRY:Entry")
dígale al enlazador que cambie la forma del punto de entrada WinMain()
a Entry()
después de eso CRTStartup
va a transferir el control aEntry()
Linker -> General -> Additional Library Directories
)?