【问题标题】:Visual Studio: which source file includes a particular library (with "pragma comment")?Visual Studio:哪个源文件包含特定库(带有“pragma comment”)?
【发布时间】:2015-05-29 15:11:53
【问题描述】:

编辑:解决了 James McNellis 的建议,这导致我进入了有问题的图书馆。这是我没有用垃圾箱检查过的。

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

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

  • 搜索“#pragma comment”不起作用,因为它由多层宏组成,并且版本号是从 _MSC_VER 获得的,因此“9”和“12”实际上从未出现在来源。

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

【问题讨论】:

  • 链接 /verbose 并在输出中搜索“library_v9.lib”。
  • @TScherer 您可能应该为这个问题添加一个答案,而不是解决的编辑。

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


【解决方案1】:

链接器有一个/verbose 开关,它将导致它打印出它正在打开哪些库、它正在搜索哪些符号以及它为什么要搜索这些符号的详细日志。

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

【讨论】:

    【解决方案2】:

    您是否检查了属性->链接器->输入部分?

    【讨论】:

    • 是的,它不存在。这是另一个我没有用dumpbin检查过的库,用“/verbose”链接让我找到了它。
    猜你喜欢
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 2021-04-05
    • 2014-12-15
    • 1970-01-01
    相关资源
    最近更新 更多