O que #pragma comment
significa o seguinte?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
O que #pragma comment
significa o seguinte?
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
Respostas:
#pragma comment
é uma diretiva de compilador que indica o Visual C ++ para deixar um comentário no arquivo de objeto gerado. O comentário pode ser lido pelo vinculador ao processar arquivos de objetos.
#pragma comment(lib, libname)
diz ao vinculador para adicionar a biblioteca 'libname' à lista de dependências da biblioteca, como se você a tivesse adicionado nas propriedades do projeto em Linker->Input->Additional dependencies
Consulte o comentário #pragma no MSDN
Eu sempre os chamei de "diretivas do compilador". Eles direcionam o compilador para fazer as coisas, ramificando, incluindo bibliotecas como mostrado acima, desativando erros específicos, etc., durante a fase de compilação.
As empresas de compiladores geralmente criam suas próprias extensões para facilitar seus recursos. Por exemplo, (acredito), a Microsoft iniciou o negócio "#pragma once" e era apenas em produtos da MS, agora não tenho tanta certeza.
Diretivas Pragma Inclui "#pragma comment" na tabela que você verá.
HTH
Suspeito que o GCC, por exemplo, tenha seu próprio conjunto de # pragmas.
#pragma comment
significa.
As diretivas da Pragma especificam as opções do compilador do sistema operacional ou da máquina (x86 ou x64 etc.). Tem várias opções acessíveis. Detalhes podem ser encontrados em https://msdn.microsoft.com/en-us/library/d9x1s805.aspx
#pragma comment( comment-type [,"commentstring"] )
tem esse formato.
Consulte https://msdn.microsoft.com/en-us/library/7f0aews7.aspx para obter detalhes sobre diferentes tipos de comentários.
#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
As linhas de código acima incluem os nomes (ou caminho) da biblioteca que precisam ser pesquisados pelo vinculador. Esses detalhes estão incluídos como parte do registro de pesquisa na biblioteca no arquivo de objeto.
Então, neste caso, kernel.lib
e user32.lib
são procurados pelo vinculador e incluído no executável final.
As respostas e a documentação fornecida pelo MSDN são as melhores, mas eu gostaria de adicionar um caso típico que eu uso muito, o que requer o uso de #pragma comment
para enviar um comando ao vinculador no momento do link, por exemplo
#pragma comment(linker,"/ENTRY:Entry")
diga ao vinculador para alterar o formulário do ponto de entrada WinMain()
para Entry()
depois CRTStartup
transferir o controlador paraEntry()
Linker -> General -> Additional Library Directories
)?