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


当前回答

对于那些正在寻找解决这个问题的OpenGL SuperBible第6源代码示例的人来说,解决方案是在发布中构建而不是调试。在发布版中,所有项目都禁用了增量链接选项。

其他回答

对于那些正在寻找解决这个问题的OpenGL SuperBible第6源代码示例的人来说,解决方案是在发布中构建而不是调试。在发布版中,所有项目都禁用了增量链接选项。

检查cvtrs.exe的版本:

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

错误的版本: 日期:03/18/2010 时间:下午01:16 大小:31,048字节 名称:cvtres.exe

正确的版本: 日期:02/21/2011 时间:下午06:03 大小:31,056字节 名称:cvtres.exe

如果你有错误的版本,你应该复制正确的版本:

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

把这里的替换掉:

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

i.e.

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

如果你正在使用x64,这里有一个资源将会有所帮助:

这是因为Microsoft . net 4.5与Visual c++ 10不兼容。解决方法是确保运行。net版本的cvres .exe,而不是Visual c++版本。我通过重命名这些文件的Visual c++版本并复制。net版本来实现这一点。

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

1. C:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
2. C:\windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe

通过移除。net 4.5,并用。net 4.0代替,这个问题神奇地解决了。然后我不得不修复Visual Studio 2010 -它正在以某种方式损坏。

我之前安装了Visual Studio 2012,然后又卸载了,这可能与这个问题有关。

总结:

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步