【问题标题】:VS2008 upgrade to VS2010 "cannot open file 'mfc90d.lib'"VS2008升级到VS2010“无法打开文件'mfc90d.lib'”
【发布时间】:2011-05-16 07:08:30
【问题描述】:

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

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

有人遇到同样的问题吗?

【问题讨论】:

  • 你有 64 位操作系统吗?

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


【解决方案1】:

可能的原因包括

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

下一个诊断步骤:在链接器上设置 /verbose 选项,并准确计算出在 mfc90d.lib 中拖动的是哪个 obj。

马丁

【讨论】:

  • 非常感谢。我发现原因是 b) 我正在链接使用 VC9 构建的第 3 方静态库。
  • 好吧@user755226:我面临着几乎相同的问题..我的问题是“链接:致命错误LNK1104:无法打开文件“mfc100d.lib””。你能指导我你为你的问题做了什么..我认为问题几乎是一样的..很抱歉,我不能发布任何问题,因为我的问题会话已经结束,。你能帮我吗谢谢
【解决方案2】:

通过对定义“_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) 一起编译。

【讨论】:

    猜你喜欢
    • 2013-09-01
    • 2011-03-30
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多