LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

很多伙伴在更新VS2010/VC2010(Visual C++ 2010),或者卸载VS2012安装2010后,建立Win32 Console Project/MFC项目时会出现"LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏"的错误。

错误描述:
1>正在编译资源…
1>正在编译资源清单…
1>正在链接…
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>生成日志保存在“file://E:\HelloC\ShapeFill V11\ShapeFill\Debug\ShapeFill.log”
1>ShapeFill- 1个错误,0个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========

外显的错误是:

LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
此时在输出目录的debug目录下没有可执行文件.exe,有时候在release模式下却可以运行,其目录文件夹下有可执行文件.exe。也就是死活在debug模式下运行出错,release模式下没有错误,运行一切正常。
LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

解决方案:

第一步:将 项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。 “是”改为“否”。若还不能解决问题进入第二步。

第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。
查找是否有两个cvtres.exe。推荐用Everything文件搜索工具。
C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

治本的办法是第二步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。

参考:

https://www.iteye.com/blog/yacare-2010049