【发布时间】:2015-12-08 14:16:58
【问题描述】:
问题的背景(历史):
- 从 VC6 到 VS2008 再到 VS2012(全部为 32 位)升级(和微调)这个 50+k 行 C++ 项目后一切正常
-
升级到 VS2013 (Premium) 以兼容 3rd 方程序,一切都很好,经过(痛苦的)微调到 Unicode,除了:Edit and Continue (EnC) 不再工作。
论坛上有几篇关于报告的 EnC 问题的帖子,其中一篇建议在 VS2013 'Ultimate' 中可以使用一项设置(即禁用新的 IntelliTrace,仅在该版本中可用)。注意:MSFT 在 VS2015 中显然已经解决了这个问题,但是第 3 方程序尚未针对该版本进行验证。
- 安装了VS2013 Ultimate:一切都很好,但EnC仍然无法正常工作,并且非常想念,例如在微调对话框时;因此
-
在 VS2012 中重新打开项目(以便能够使用 EnC),并将 Project > Properties > Config > General > Platform Toolset 更改为“VS110”(VS2012 的名称):
--> LINK : 致命错误 LNK1104: 无法打开文件 'mfc120ud.lib' (注意:这是 'VS2013' 平台的 MFC 调试 Unicode dll 库)
现在,当我在 VS2013 IDE 中重新打开项目时,使用相同的 VS110 平台工具集,在构建时会弹出相同的错误,
当我将平台工具集更改为“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