我已经安装了Visual Studio 2012发布预览版,它看起来很好,但现在当我尝试使用Visual Studio 2010编译c++项目时,我得到了以下错误消息:
链接:致命错误LNK1123:转换到COFF期间失败:文件无效或损坏
我不是100%确定,但这似乎与项目中有.rc(资源)文件有关。
我尝试从添加/删除程序和重新启动修复Visual Studio 2010,但这没有效果。
如果我使用Visual Studio 2012 RC来编译c++项目,而设置使用Visual Studio 2010工具集,我也会得到相同的错误。升级到Visual Studio 2011工具集可以解决这个问题(当然,我不想对产品代码这样做)。
更新:我已经卸载了Visual Studio 2012,重新启动,问题仍然存在!的帮助!
如果禁用增量链接对您不起作用,并且关闭“嵌入清单”也不起作用,那么在您的路径中搜索多个版本的cvres .exe。
通过调试/VERBOSE链接器选项,我发现链接器正在写错误消息时,它试图调用cvtres,它失败了。
结果在我的路径中有这个实用程序的两个版本。一个在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe,另一个在C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe。VS2012安装后,VS2010版本的cvres .exe将不再工作。如果这是路径中的第一个文件,并且链接器决定它需要将.res文件转换为COFF对象格式,则链接将使用LNK1123失败。
(非常令人恼火的是,错误信息与实际问题无关,但这对微软产品来说并不罕见。)
只需删除/重命名该实用程序的旧版本,或重新安排PATH变量,以便将正常工作的版本放在前面。
注意,对于x64工具构建,您可能还必须检查C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64,其中有另一个cvres .exe。
在2014年1月,由于某些原因,我安装了。net Framework 4.5.1,我不知道是由于第三方软件安装还是自动更新。
1月29日,我安装了一个组件,我开始收到
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
消息。当时我通过避免增量环节来解决。
1月31日,我安装了。net Framework 4.5.1的另一个组件,增量链接的把戏再也不管用了。然后我安装了Visual Studio 2010 SP1,但后来问题变成了:
Error 6 error LNK1104: cannot open file 'msvcrtd.lib'.
我认为SP1搞砸了我的Visual Studio 2010安装。
所以我卸载了。net Framework 4.5.1,安装了。net Framework 4.0,然后卸载并重新安装了Visual Studio 2010。这对我很管用。