VS2008升级到VS2010“无法打开文件'mfc90d.lib'”

时间:2011-05-16 07:08:31

标签: visual-studio-2010 visual-c++ upgrade

我正在尝试将Visual C ++ 2008项目升级到Visual C ++ 2010项目。当升级完成并且我强迫它时,我收到了这个错误: 致命错误LNK1104:无法打开文件'mfc90d.lib'

我认为它应该引用“mfc100d.lib”,我尝试了很多方法来解决它但失败了。

有没有人遇到同样的问题?

2 个答案:

答案 0 :(得分:7)

可能的原因包括

a)您没有重建所有源文件 - 尝试删除所有输出obj和lib以确保 b)您正在链接使用VC9构建的第三方静态库 - 您将需要VC10版本 c)您的标题路径指向VC9标题(检查您的解决方案的路径选项) d)由于其他原因,您的项目包含对mfc90d的明确引用。

下一个诊断步骤:在链接器上设置/ verbose选项,确切地确定在mfc90d.lib中拖动哪个obj。

马丁

答案 1 :(得分:1)

通过对我的所有源文件进行全局搜索以找到定义“_MFC_FILENAME_VER”,我发现了我错过的MFC100.dll的问题。我在我的一个头文件中找到了以下定义:

#define _MFC_FILENAME_VER 100

在此块中使用:

#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "d.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "d.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER ".lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER ".lib")
#endif

我把它改为:

#define _MFC_FILENAME_VER 110

因此它将使用VS 2012的MFC版本(mfc110d.lib)进行编译。