>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
问题说明:
例如:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。
- l 链接器(link)通过调用cvtres.exe完成文件向coff格式的转换,所以出现这种错误的原因是cvtres.exe出现了问题。
- l 安装VS2012后,之前安装的VS2010的cvtres.exe就无法使用了(版本对不上)。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器(link)需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。
- l 当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。
因为是cvtres.exe版本错误导致的结果,所以凡是能使VS链接器找到正确的cvtres.exe版本的方法都可以解决该问题。或者使VS链接器不生成COFF的方法都可以。
解决方案:
【方法一】替换/删除/重命名(3种方法皆可)
在电脑里面搜索一下cvtres.exe,发现多个路径里面都有cvtres.exe文件,可以
- 使用最新的cvtres.exe替换老的文件即可。替换之前记得备份一下,如果不对,可以替换回来。
- 删除C盘中和对应安装路径中版本较老的那个cvtres.exe文件。
- 重命名C盘中和对应安装路径中版本较老的那个cvtres.exe文件。
如以下两个路径中的cvtres.exe:
C:WindowsMicrosoft.NETFrameworkv4.0.30319 //2015.6.4
G:Program Files (x86)Microsoft Visual Studio 10.0VCin //2015.3.18 安装路径
【方法二】
项目属性配置属性清单工具输入和输出嵌入清单:原来是“是”,改成“否”。
说明:这种方法每个工程均需要修改配置。