天天看点

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

错误提示信息:>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

问题说明:

例如:当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。

1、链接器(link)通过调用cvtres.exe完成文件向coff格式的转换,所以出现这种错误的原因是cvtres.exe出现了问题。

2、安装VS2012后,之前安装的VS2010的cvtres.exe就无法使用了(版本对不上)。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器(link)需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。

3、当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:\Windows\Microsoft.NET\Framework\v4.0.30319 //2015.6.4

G:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin //2015.3.18 安装路径

【方法二】

项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。

说明:这种方法每个工程均需要修改配置。

继续阅读