2011-05-16 600 views
1

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

我认为它应该参照“mfc100d.lib”,我尝试过很多办法来解决它但失败了。

有人遇到同样的问题吗?

+0

您是否拥有64位操作系统? – 2011-05-16 08:25:25

回答

7

可能的原因包括

一)你是不是重建所有的源文件 - 尝试删除所有输出OBJ和lib,以确保 b)你要链接,将其与VC9建立一个第三方静态库 - 你会需要VC10版本 c)您的标题路径指向VC9标题(请检查您的解决方案的路径选项) d)由于某些其他原因,您的项目包含对mfc90d的明确引用。

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

马丁

+1

非常感谢。我发现原因是b)我连接了一个由VC9构建的第三方静态库。 – 2011-05-19 01:44:23

+0

well @ user755226:我面临着几乎相同的问题。 我的问题是“LINK:致命错误LNK1104:无法打开文件”mfc100d.lib“”。能否请你指导我做什么你的问题..我认为问题几乎是相同的.. 抱歉说,我不能发布任何问题,因为我的问题会议已经结束。你能帮我谢谢 – RidaSana 2011-06-19 03:25:49

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)。