【问题标题】:VS2013 C++ LINK : fatal error LNK1104: cannot open file 'mfc110ud.lib'VS2013 C++ LINK:致命错误 LNK1104:无法打开文件“mfc110ud.lib”
【发布时间】:2015-12-08 14:16:58
【问题描述】:

问题的背景(历史):

  1. 从 VC6 到 VS2008 再到 VS2012(全部为 32 位)升级(和微调)这个 50+k 行 C++ 项目后一切正常
  2. 升级到 VS2013 (Premium) 以兼容 3rd 方程序,一切都很好,经过(痛苦的)微调到 Unicode,除了:Edit and Continue (EnC) 不再工作。

    论坛上有几篇关于报告的 EnC 问题的帖子,其中一篇建议在 VS2013 'Ultimate' 中可以使用一项设置(即禁用新的 IntelliTrace,仅在该版本中可用)。注意:MSFT 在 VS2015 中显然已经解决了这个问题,但是第 3 方程序尚未针对该版本进行验证。

  3. 安装了VS2013 Ultimate:一切都很好,但EnC仍然无法正常工作,并且非常想念,例如在微调对话框时;因此
  4. 在 VS2012 中重新打开项目(以便能够使用 EnC),并将 Project > Properties > Config > General > Platform Toolset 更改为“VS110”(VS2012 的名称):

    --> LINK : 致命错误 LNK1104: 无法打开文件 'mfc120ud.lib' (注意:这是 'VS2013' 平台的 MFC 调试 Unicode dll 库)

  5. 现在,当我在 VS2013 IDE 中重新打开项目时,使用相同的 VS110 平台工具集,在构建时会弹出相同的错误,

  6. 当我将平台工具集更改为“VS120”(VS2013 的名称)时,错误变为 LINK:致命错误 LNK1104:无法打开文件“mfc110ud.lib”,这是 VS2012 的 MFC 调试 Unicode 库。 ..

我发现错误的切换和环境令人费解。最后三个步骤是可重复的。 IDE 在任何更改之前关闭。操作系统重新启动会改变什么,如果是,为什么?是否应该删除配置文件(如 .vcxproj、.vcxproj.user、.suo、.sdf、.sln 或其他文件)?

我们将不胜感激所有有助于理解和修复此行为的帮助。

【问题讨论】:

  • ...好吧,我找到了让它再次工作的方法:构建 > 清洁解决方案,然后构建 > 构建解决方案。
  • 这个重建项目编译和链接没有眨眼。但是,这会指向一些隐藏在编译对象中的配置元素吗?我仍然对你的想法感兴趣。干杯。
  • 不是配置,链接需求嵌入在编译器创建的.obj文件中。 MFC 标头包含一个#pragma 注释,以确保链接正确的.lib 文件。因此,如果您切换编译器版本但又没有确保从干净的构建开始,那么您将遇到此问题。可能需要手动删除预编译的头文件 (.pch)。

标签: c++ visual-studio-2012 visual-studio-2013 unicode linker


【解决方案1】:

问题是“字符集”。每个字符集都将构建自己的 *.dll。您必须在“Project -> Properties -> ConfigurationProperties -> Common -> ProjectDefault -> CharSet”中选择“MBCS”而不是“Unicode”。

【讨论】:

    【解决方案2】:

    我使用的是 VS2012,而我尝试将平台更改为 Win32。错误得到了修复。

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2011-04-02
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多