【发布时间】:2012-10-01 01:05:02
【问题描述】:
我遇到了一段使用#pragma comment(lib, "libraryname") 的代码。
为什么要使用这种类型的用法,而不是仅从属性菜单链接库?在什么情况下需要这种用法?我在 Windows 中使用 C++ Visual Studio 2010。
很高兴看到一个需要这种用法的示例。
【问题讨论】:
标签: c++ visual-studio-2010 static-linking dynamic-linking
我遇到了一段使用#pragma comment(lib, "libraryname") 的代码。
为什么要使用这种类型的用法,而不是仅从属性菜单链接库?在什么情况下需要这种用法?我在 Windows 中使用 C++ Visual Studio 2010。
很高兴看到一个需要这种用法的示例。
【问题讨论】:
标签: c++ visual-studio-2010 static-linking dynamic-linking
库编写者可以将#pragma comment(lib, ...) 命令放在公共头文件 (.h) 中。在这种情况下,客户端不需要将此库添加到链接器依赖项列表中。通过在程序中包含一个 h 文件,客户端会自动链接到所需的库。
【讨论】:
它包含在某种意义上,它只需要包含自动拉入关联库的头文件。您甚至可以使用#ifdef..#endif 魔术来根据您的环境有条件地引入正确的库。
当从头开始一个新项目时,并不是每个人都会使用你的 MSVC 项目,只要能够#include 并让它工作就是一个编写良好的库的标志。
【讨论】:
经典示例 - 链接不同版本的库:
#if CURRENT_VERSION >= 10
#pragma comment(lib, "thirdPartyLibV2.0.lib")
#else //version < 10
#pragma comment(lib, "thirdPartyLibV1.0.lib")
#endif
【讨论】: