转帖:http://www.cnblogs.com/cydonia/archive/2012/06/19/2554730.html
VS纠结的嵌入清单 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
今天同事改了两行代码,update之后工程立马宕掉,显示错误如下
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
clean之后rebuild, 依然如此。对项目中每个依赖工程rebuild 结果全部崩坏,完全不能理解。
之后查到微软官方的一个解决方案:
http://support.microsoft.com/kb/320216/zh-cn
发现是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作
右键->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]
rebuild 之,成功解决
flyer说VS2010有这个是为了兼容,2005和2008就这个东西最烦人,2003就没这东西
============================================================================
又遇到这样的老问题,应该一次性解决掉。
因为 连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。
如果按上面的不让转换清单生成,则会少生成不少文件,止于少了的清单文件 暂时还不知道有什么影响。调试没发现什么问题。
http://blog.chinaunix.net/uid-20385936-id-3506149.html
在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新的cvtres.exe替换老的文件即可,替换之前记得备份一下,如果不对,可以替换回来。
例如:我的电脑里面安装了vs2010,最近更新了系统,打了一些补丁,结果就出现这种错误了。在电脑里面搜索发现
C:\Program Files\Microsoft Visual Studio 10.0\VC\bin
C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7600.16385_none_ba476986f05abc65
C:\Windows\Microsoft.NET\Framework\v4.0.30319
这三个路径里面都有cvtres.exe文件,于是我尝试使用第二个路径里面的文件替换第一个路径的文件,问题解决如果是64位系统的还会有一个64位的文件,一样备份替换就好了