编辑:根据 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/