gpt4 book ai didi

C++:#pragma comment(lib, "XXX") 实际上对 "XXX"做了什么?

转载 作者:IT老高 更新时间:2023-10-28 12:46:52 31 4
gpt4 key购买 nike

我的背景是 C#,但我必须维护一些遗留 (MS) C++。在那个代码库中我偶然发现:

#pragma comment(lib, "OtherLib700.lib")

其中 700 是一些版本控制。另外lib是一个同名的DLL。

我最初认为该程序将依赖于 DLL,但在将其从系统中删除后,该程序仍然可以工作。不过,还有一个更新版本的 DLL,名为 OtherLib900...

似乎程序“包含”了 lib 的代码,因此它不再依赖于外部 DLL。 (或者程序“自动”使用较新的 DLL...)

哪一个是正确的?有没有办法进一步证实“假设”?

最佳答案

那个 pragma 用于链接到指定的 .lib 文件。这是在项目设置的外部依赖项字段中指定库的替代方法。

主要用于支持不同的版本:

#ifdef USE_FIRST_VERSION
#pragma comment(lib, "vers1.lib")
#else
#pragma comment(lib, "vers2.lib")
#endif

当您的应用程序使用动态链接库时,lib 文件会告诉您有关在 dll 中导出哪些符号的信息。所以基本上你只需要lib来编译和链接,但是你需要dll来运行程序,因为它包含了所有的二进制代码。

你说有一个关联的dll,这通常表示lib文件只包含链接信息,没有代码。如果未找到关联的 dll,您应该会收到运行时错误。您可以通过 MSVS 检查是否加载了不同版本的 dll 或是否从其他位置加载。

关于C++:#pragma comment(lib, "XXX") 实际上对 "XXX"做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199595/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com