“ # 实用主义评论”是什么意思?

下面的 #pragma comment是什么意思?

#pragma comment(lib, "kernel32")
#pragma comment(lib, "user32")
146381 次浏览

这些链接在 MSVC + + 中选择的库中。

我一直称之为“编译器指令”它们指示编译器在编译阶段执行各种操作、分支、包括上面所示的库、禁用特定错误等等。

编译器公司通常创建他们自己的扩展来促进他们的特性。例如,(我相信)微软开始了“ # 杂项一次”的交易,它只是在微软产品,现在我不那么肯定。

Pragma Directions 在您将看到的表中包含“ # 杂注”。

高温

例如,我怀疑海湾合作委员会(GCC)拥有自己的 # 杂注。

#pragma comment是一个编译器指令,它指示 Visual C + + 在生成的对象文件中留下注释。然后,链接器在处理目标文件时可以读取注释。

#pragma comment(lib, libname)告诉链接器将“ libname”库添加到库依赖项列表中,就像您在 Linker->Input->Additional dependencies的项目属性中添加了它一样

请参阅 MSDN 上的 # 实用主义评论

Pragma 指令指定特定于操作系统或机器(x86或 x64等)的编译器选项。有几种选择。详细信息可以在 https://msdn.microsoft.com/en-us/library/d9x1s805.aspx中找到

#pragma comment( comment-type [,"commentstring"] )有这种格式。

有关不同注释类型的详细信息,请参阅 https://msdn.microsoft.com/en-us/library/7f0aews7.aspx

# 杂注(lib,“ kernel32”) # 实用注释(lib,“ user32”)

上面的代码行包括链接器需要搜索的库名称(或路径)。这些详细信息作为对象中的库搜索记录的一部分包含在内 文件。

因此,在这种情况下,链接器将搜索 kernel.libuser32.lib,并将其包含在最终的可执行文件中。

MSDN 提供的答案和文档是最好的,但我想添加一个典型的例子,我使用了很多,需要使用 #pragma comment在链接时向链接器发送命令,例如

#pragma comment(linker,"/ENTRY:Entry")

告诉链接器将入口点从 WinMain()改为 Entry(),然后 CRTStartup将控制权转移到 Entry()