链接:致命错误LNK1123:转换到COFF期间失败:文件无效或损坏'安装Visual Studio 2012发布预览后

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

818404 次浏览

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

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

这个MSDN线程解释了如何修复它。

总结:

  • 禁用增量链接,通过转到

    Project Properties
    -> Configuration Properties
    -> Linker (General)
    -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • or install VS2010 SP1.

Edits (@CraigRinger): Note that installing VS 2010 SP1 will remove the 64-bit compilers. You need to install the VS 2010 SP1 compiler pack to get them back.

This affects Microsoft Windows SDK 7.1 for Windows 7 and .NET 4.0 as well as Visual Studio 2010.

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

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

谢谢!

这是因为net Framework 4.5正在取代。net Framework 4.0。 我卸载了几次Visual Studio 2010,但都没有成功。当我删除。net Framework 4.5并重新安装Visual Studio 2010时,它很好

看到# EYZ0。

如果你已经安装了Visual Studio 2012 RC,那么它会安装。net 4.5 RC。

卸载。net 4.5 RC,并安装你需要的版本(VS 2010为4.0)。这应该可以解决您遇到的任何问题。

这解决了同样的问题。不需要卸载Visual Studio。

对我来说,将“Generate Manifest”设置为“No”就能解决这个问题。(也固定与/INCREMENTAL:NO)

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

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

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

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

我设置启用增量链接“不”(/增量:没有)对我没用

接下来我改变了:

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

这对我来说很有用:)

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

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

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

如果禁用增量链接对您不起作用,并且关闭“嵌入清单”也不起作用,那么在您的路径中搜索多个版本的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,这里有另一个cvtres.exe

根据MSDN论坛的这个帖子:VS2012 RC安装破坏VS2010 c++项目,简单地说,从VS2010 SP1cvtres.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安装cvtres.exe(一个没有SP1)

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

这样,您将有效地使用cvtres.exe的更正版本,即11.0.51106.1。

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

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

重新安装CMake对我有用。新的CMake副本发现它应该使用Visual Studio 11而不是10。

我通过以下方法解决了这个问题:

  1. 在命令提示符中,输入msconfig并按enter。
  2. 单击“服务”页签。
  3. 寻找“Application Experience”并打勾(即选择此选项以启用)。
  4. 单击OK。并在必要时重新启动。

因此,这个问题将永远存在。在没有任何干扰的情况下随机构建和调试你的c++项目。

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

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

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

检查cvtrs.exe的版本:

dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"
< p >错误版本:< br > # EYZ0: 03/18/2010 < br > time: 01:16 PM
size: 31,048字节
# EYZ0: cvtres.exe < / p >

正确版本:
date: 02/21/2011
time: 06:03 PM
size: 31,056字节
# EYZ0: cvtres.exe < / p >

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

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

即。

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"

我的问题是,我的PC上有两条路径包含相同的库。两条路径都被添加到配置属性->连接器->通用中的附加图书馆目录中。删除其中一条路径就解决了问题。

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

在启用增量链接->“No (/ Incremental: No)”后,它不为我工作,但在我删除rc文件后,它为我工作。

即使安装了Service pack,你还是会得到错误,然后尝试删除/重命名C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin文件夹中的cvres .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后也遇到了同样的问题: 我先卸载了。net框架, 从visualstudio.com下载visual studio,选择“repair”。< / p >

NET框架自动安装与visual studio ->和现在它工作良好!

总结:

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"

如果step2不起作用,执行Step3 复制文件之一:

  1. C:\Program Files (x86)\Microsoft Visual Studio 李11.0 \ VC \ bin \ cvtres.exe < / >
  2. C:\Program Files (x86)\Microsoft Visual Studio 李12.0 \ VC \ bin \ cvtres.exe < / >
  3. C:\Program Files (x86)\Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe < / p >

    则替换为C:\Program Files (x86)\Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe 和我一起,做3步it工作

我在微软Visual Studio 2010终极版上也遇到了同样的问题,它是由这个YouTube视频中描述的方法解决的

视频建议将C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin (in my Win7X64 matchine)中的cvtres.exe重命名为cvtres-old.exe