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


当前回答

根据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版本)。

其他回答

根据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版本)。

总结:

Step1

Project Properties 
   -> Configuration Properties 
       -> Linker (General) 
          -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"

如果第1步不奏效,执行第2步

Project Properties 
   -> Configuration Properties 
       -> Manifest Tool (Input and Output) 
          -> Enable Incremental Linking -> "No"

如果第二步不起作用,执行第三步 复制文件之一:

C:\Program Files (x86)\Microsoft Visual Studio 11.0 \ VC \ bin \ cvtres.exe C:\Program Files (x86)\Microsoft Visual Studio 12.0 \ VC \ bin \ cvtres.exe C:\Program Files (x86)\Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe 然后替换到C:\Program Files (x86)\Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe 和我一起,做3步

我使用Windows SDK进行核心Win32编程,由于“未知的”原因安装了。net 4.5。我已经卸载了它,并安装了4.0,就像之前的答案一样,是的,它也适用于我。

我只是大吃一惊,我不得不使用无用的。net框架来使用SDK构建Win32应用程序。

我尝试了几次,最终通过卸载VS2010解决了这个问题。我想我没有卸载所有的文件,这就是为什么它不能工作的第一次。

在VS2012的安装中,据说如果你有VS2010 SP1,你不能在两个程序中工作在同一个项目上。建议只有一个程序。

谢谢!

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

接下来我改变了:

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

这对我来说很有用:)