LNK1004:无法打开文件';Jsfwbase12D.lib'; < >我对编译C++过程中的错误有点困惑。
在链接器配置的输入部分,我们还有一个文件名为Jsfwbase12D.lib的附加依赖项。该文件最近更改为Jsfwbase12.lib,没有大写字母D。我将项目中的引用更改为新文件名,然后尝试重新编译,并收到以下错误消息LNK1004:无法打开文件';Jsfwbase12D.lib'; < >我对编译C++过程中的错误有点困惑。,c++,visual-studio-2008,linker,C++,Visual Studio 2008,Linker,在链接器配置的输入部分,我们还有一个文件名为Jsfwbase12D.lib的附加依赖项。该文件最近更改为Jsfwbase12.lib,没有大写字母D。我将项目中的引用更改为新文件名,然后尝试重新编译,并收到以下错误消息 Error 2 fatal error LNK1104: cannot open file 'Jsfwbase12D.lib' m5gaddrs m5gaddrs 我在记事本中打开vcproj文件,搜索旧文件名,结果发现没有结果 有人知道为什么链接器没有查找正确的
Error 2 fatal error LNK1104: cannot open file 'Jsfwbase12D.lib' m5gaddrs m5gaddrs
我在记事本中打开vcproj文件,搜索旧文件名,结果发现没有结果
有人知道为什么链接器没有查找正确的文件,而是试图查找旧文件吗
编辑:
我在记事本中打开了obj文件,找到了旧的Jsfwbase12D.lib引用。看来这就是链接器失败的原因。现在真正的问题是,如果没有在任何地方指定这些引用,为什么编译器要为调试模式插入这些引用
/DEFAULTLIB:"Jsfwbase12D.lib"
您的代码可能包含
#pragma注释(lib,“Jsfwbase12D.lib”)
。这将通知链接器在链接期间包含的依赖项。我只是进行了一次搜索,在源代码中没有找到对Jsfwbase12D.lib的引用。我只发现了两个这种#pragma警告(disable:4101)的实例。目前我唯一能想到的建议是尝试一个干净的版本并运行一个新的版本。尝试时没有运气:(编译器似乎生成了错误的/defaultlib值。我发现了问题所在。对引用的头文件的引用具有此pragma。#如果已定义#调试#pragma注释(lib,“Jsfwbase12D.lib”)