编辑:解决了詹姆斯麦克纳利斯的建议,这使我进入了违规的图书馆。这是我没有用dumpbin检查过的。
我正在构建一个Visual Studio 2013项目,该项目使用“#pragma comment”链接静态库,而不是在项目属性中列出库。用新版本替换库后,我收到链接错误,因为它仍在尝试查找一些旧库,例如当它应该链接“library_v12.lib”时,它找不到“library_v9.lib”。如何找到旧库的请求?这是我尝试过的:
删除所有对象等,并从头开始重建。
搜索“#pragma comment”不起作用,因为它构建在几层宏中,版本号是从_MSC_VER获得的,所以“9”和“12”实际上从未出现在源。
在所有链接到可执行文件的库上运行dumpbin / DIRECTIVES。它们都引用了正确的“12”库版本。
答案 0 :(得分:0)
您是否检查了属性 - >链接器 - >输入部分?
答案 1 :(得分:0)
链接器有一个/verbose
开关,它将打印出一个详细的日志,显示它正在打开的库,它正在搜索的符号以及搜索这些符号的原因。
通常,调试此类问题的最直接方法是将/verbose
添加到链接器选项,在文本编辑器中打开构建日志,然后搜索您在其中的库名称或符号。对此感兴趣在这种情况下,搜索" library_v9.lib"。链接器将告诉您是什么原因导致它打开该库。