下面的 #pragma comment是什么意思?
#pragma comment
#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")
这些链接在 MSVC + + 中选择的库中。
我一直称之为“编译器指令”它们指示编译器在编译阶段执行各种操作、分支、包括上面所示的库、禁用特定错误等等。
编译器公司通常创建他们自己的扩展来促进他们的特性。例如,(我相信)微软开始了“ # 杂项一次”的交易,它只是在微软产品,现在我不那么肯定。
Pragma Directions 在您将看到的表中包含“ # 杂注”。
高温
例如,我怀疑海湾合作委员会(GCC)拥有自己的 # 杂注。
#pragma comment是一个编译器指令,它指示 Visual C + + 在生成的对象文件中留下注释。然后,链接器在处理目标文件时可以读取注释。
#pragma comment(lib, libname)告诉链接器将“ libname”库添加到库依赖项列表中,就像您在 Linker->Input->Additional dependencies的项目属性中添加了它一样
#pragma comment(lib, libname)
Linker->Input->Additional dependencies
请参阅 MSDN 上的 # 实用主义评论
Pragma 指令指定特定于操作系统或机器(x86或 x64等)的编译器选项。有几种选择。详细信息可以在 https://msdn.microsoft.com/en-us/library/d9x1s805.aspx中找到
#pragma comment( comment-type [,"commentstring"] )有这种格式。
#pragma comment( comment-type [,"commentstring"] )
有关不同注释类型的详细信息,请参阅 https://msdn.microsoft.com/en-us/library/7f0aews7.aspx。
# 杂注(lib,“ kernel32”) # 实用注释(lib,“ user32”)
上面的代码行包括链接器需要搜索的库名称(或路径)。这些详细信息作为对象中的库搜索记录的一部分包含在内 文件。
因此,在这种情况下,链接器将搜索 kernel.lib和 user32.lib,并将其包含在最终的可执行文件中。
kernel.lib
user32.lib
MSDN 提供的答案和文档是最好的,但我想添加一个典型的例子,我使用了很多,需要使用 #pragma comment在链接时向链接器发送命令,例如
#pragma comment(linker,"/ENTRY:Entry")
告诉链接器将入口点从 WinMain()改为 Entry(),然后 CRTStartup将控制权转移到 Entry()
WinMain()
Entry()
CRTStartup