c++ - Visual Studio : which source file includes a particular library (with "pragma comment")?

标签 c++ visual-studio visual-studio-2013 linker

编辑:根据 James McNellis 的建议解决,这将我带到了有问题的图书馆。这是我没有用 dumpbin 检查过的。

我正在构建一个 Visual Studio 2013 项目,该项目使用“#pragma comment”而不是在项目属性中列出库来链接静态库。用新版本替换库后,我收到链接错误,因为它仍在尝试查找一些旧库,例如当它应该链接“library_v12.lib”时它找不到“library_v9.lib”。如何找到请求旧库的位置?这是我尝试过的:

  • 删除所有对象等并从头开始重建。

  • 搜索“#pragma comment”无效,因为它被构建到几层宏中,并且版本号是从 _MSC_VER 获得的,因此“9”和“12”实际上从未出现在来源。

  • 在链接在一起成为可执行文件的所有库上运行 dumpbin/DIRECTIVES。它们都引用了正确的“12”库版本。

最佳答案

链接器有一个 /verbose 开关,可以打印出详细的日志,记录正在打开的库、搜索的符号以及搜索这些符号的原因。

通常,调试此类问题最直接的方法是将 /verbose 添加到链接器选项,在文本编辑器中打开构建日志,然后在你感兴趣的。在这种情况下,搜索“library_v9.lib”。链接器会告诉您是什么原因导致它打开该库。

关于c++ - Visual Studio : which source file includes a particular library (with "pragma comment")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533109/

相关文章:

c# - 如何将 JavaScript 库添加到我的 C# MVC 项目?

c++ - 计算给定数组的子序列数,使得它们的总和小于或等于给定数?

c# - 为什么 Visual Studio 不认为 Obsolete ("message") 是警告?

visual-studio - Visual Studio 2010 不允许我调试 Web 应用程序

c++ - 如何遍历这样的 map ?如何修复 8 个可怕的 C2784 错误?

c# - Visual Studio 扩展编程中 .vsct 文件中的 GUID 和 ID 有什么区别?

unit-testing - 如何在VS 2013 Professional Edition上安装Microsoft Fakes(单元测试隔离)

c++ - 奇怪的 printf 行为

c++ - 当一切正确时,代码继续打印 "1"

c++ - 使用UDP协议(protocol)从Windows Socket发送到Qt Socket的网络包编解码结构