我已经安装了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,重新启动,问题仍然存在!的帮助!


当前回答

我还没有安装Visual Studio 2012,但我仍然在Visual Studio 2010中得到这个错误。我在安装Visual Studio 2010 SP1后解决了这个问题。

其他回答

我最终通过完全卸载VS2012 RC解决了这个问题,然后完全卸载VS2010,然后重新安装VS2010。

花了很长时间,但我现在又可以在VS2010中编译c++项目了。

我将启用增量链接设置为“No (/ Incremental: No)”,但它对我不起作用。

接下来我改变了:

Project Properties 
   -> Configuration Properties 
       -> General
          -> Platform Toolset -> "Visual Studio 2012 (v110)"

这对我来说很有用:)

+1用户短的答案,为我工作!

我试图用msbuild /v:diag做一些调试,我看到msbuild试图在可执行文件中嵌入一个清单,使用< someename >.dll.embed.manifest。链接器命令行上的Res,其中是一个从< someename >.dll.embed.manifest构建的资源文件。但是清单文件是一个空的Unicode文本文件。(即,带有Unicode 0xFEFF前缀的双字节文件)

因此,根本问题似乎与没有生成清单文件有关,或者在应该使用< someename >.dll.intermediate.manifest时使用了清单文件有关。

另一个解决方案似乎是关闭“嵌入清单”选项下的属性,清单工具,输入和输出。

根据MSDN论坛的这个帖子:VS2012 RC安装破坏VS2010 c++项目,简单地说,从VS2010 SP1中获取cvres .exe

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

或从VS2012

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

并将其复制到VS2010 RTM安装中的cvres .exe(没有SP1的那个)

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

这样,您就可以有效地使用cvres .exe的修正版本11.0.51106.1。

在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\ cvres .exe中的64位版本中重复相同的步骤。

这个解决方案是VS2010 SP1安装的替代方案——在某些情况下,你根本无法安装SP1(例如,如果你需要支持pre-SP1版本)。

在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。这对我很管用。