Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt' after installing Visual Studio 2012 Release Preview
我已经安装了VisualStudio 2012发布预览,它看起来很好,但是现在当我尝试使用VisualStudio 2010编译C++项目时,我得到以下错误消息:
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
我不能百分之百地肯定这一点,但它似乎与包含
我已尝试从"添加/删除程序"修复Visual Studio 2010并重新启动,但这没有效果。
当使用VisualStudio 2012 RC编译C++项目时,使用VisualStudio 2010工具集时,也会遇到同样的错误。升级到Visual Studio 2011工具集可以解决此问题(当然,我不想为生产代码这样做)。
更新:我已卸载Visual Studio 2012,重新启动,问题仍然存在!救命!
这个msdn线程解释了如何修复它。
总结:
通过转到禁用增量链接
1
2
3
4Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking ->"No (/INCREMENTAL:NO)"或安装VS2010 SP1。
编辑(@craigringer):请注意,安装VS 2010 SP1将删除64位编译器。您需要安装VS2010 SP1编译器包才能将其恢复。
这会影响Microsoft Windows SDK 7.1 for Windows 7和.NET 4.0以及Visual Studio 2010。
如果禁用增量链接对您不起作用,并且关闭"嵌入清单"也不起作用,那么在路径中搜索多个版本的cvtres.exe。
通过使用/verbose linker选项进行调试,我发现链接器在尝试调用cvtres时正在写入该错误消息,但失败了。
结果发现在我的路径中有两个版本的这个实用程序。一个在
(很恼人的是,错误消息与实际问题无关,但这对于微软产品来说并不罕见。)
只需删除/重命名该实用程序的旧版本,或者重新排列路径变量,使工作的版本排在第一位。
请注意,对于X64工具构建,您可能还需要检查
检查
1 | dir"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" |
错误版本:
正确版本:
东十一〔10〕下午6:03
如果您有错误的版本,您应该从以下位置复制正确的版本:
1 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe |
换一个:
1 | C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe |
即
1 | 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" |
根据MSDN论坛中的这个线程:VS2012 RC安装打破了VS2010 C++项目,简单地说,从VS2010 SP1获取EDCOX1×3
1 | C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe |
或者来自VS2012
1 | C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe |
并复制到VS2010 RTM安装中的
1 | C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe |
这样,您就可以有效地使用
对
此解决方案是安装VS2010的SP1的替代方案-在某些情况下,您根本无法安装SP1(即,如果需要支持SP1之前的版本)。
如果安装了Visual Studio 2012 RC,则安装了.NET 4.5 RC。
卸载.NET 4.5 rc,并安装所需的版本(4.0 for vs 2010)。这样可以解决你遇到的任何问题。
这解决了同样的问题。不需要卸载Visual Studio。
这是因为.NET Framework 4.5正在取代.NET Framework 4.0。我卸载了几次Visual Studio 2010,但没有成功。当我删除.NET Framework 4.5并重新安装Visual Studio 2010时,一切都很顺利。
请参见完全卸载Visual Studio 11以执行新安装。
对于我来说,将"生成清单"设置为"否"可以修复它。(也用/递增方式固定:否)
如果您使用的是x64,以下资源将有助于:
这是因为微软.NET 4.5与Visual C++ 10不兼容。解决方法是确保运行CVTRES.EXE的.NET版本,而不是VisualC++版本。我这样做是通过重命名这些文件的VisualC++版本并在它们的位置复制.NET版本。
1 2 3 4 5 | 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 |
我最终通过完全卸载VS2012 RC,然后完全卸载VS2010,然后重新从头安装VS2010来解决这个问题。
这花了我一辈子,但现在我又可以重新编译C++项目了。
通过删除.NET 4.5并将其替换为.NET 4.0,我神奇地解决了这个问题。然后我不得不修复Visual Studio 2010,因为它在某种程度上被破坏了。
我以前安装过Visual Studio 2012,但后来又未安装,这可能与此问题有关。
我尚未安装Visual Studio 2012,但在Visual Studio 2010中仍然出现此错误。我在安装了Visual Studio 2010 SP1之后解决了这个问题。
我对Microsoft Visual Studio 2010 Ultimate也有同样的问题,它是通过YouTube视频中描述的方法解决的。
视频建议将C:Program Files(x86)Microsoft Visual Studio 10.0vcin
+1对用户,简写为一个对我有用的答案!
我尝试用
因此,根问题似乎与未生成的清单文件有关,或者与应使用
另一种解决方案似乎是关闭属性、清单工具、输入和输出下的"嵌入清单"选项。
启用增量链接后,它对我不起作用->"否(/incremental:no)",但在删除rc文件后,它对我起作用。
截至2014年1月,由于某些原因,我安装了.NET Framework 4.5.1,我不知道是由于第三方软件安装还是自动更新。
1月29日,我安装了一个组件,并开始接收
1 | LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt |
消息。当时,我通过避免增量链接来解决问题。
1月31日,我安装了.NET Framework 4.5.1的另一个组件,增量链接技巧不再有效。然后我安装了Visual Studio 2010 SP1,但后来问题变成了:
1 | 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。这对我很有用。
总结:
1 2 3 4 5 6 | Step1 Project Properties -> Configuration Properties -> Linker (General) -> Enable Incremental Linking ->"No (/INCREMENTAL:NO)" |
如果步骤1不工作,请执行步骤2
1 2 3 4 | Project Properties -> Configuration Properties -> Manifest Tool (Input and Output) -> Enable Incremental Linking ->"No" |
如果步骤2不工作,请执行步骤3复制以下文件之一:
C:程序文件(x86)Microsoft Visual Studio13.0vcincvtres.exe文件
然后,替换为C:Program Files(x86)Microsoft Visual Studio10.0vcincvtres.exe文件和我一起做三步
即使在安装Service Pack的过程中,您也会遇到错误,然后尝试删除/重命名C:Program Files(x86)Microsoft Visual Studio 10.0vcin文件夹中的cvtres.exe。这对我很有效。
我的问题是,我的电脑上有两条包含相同库的路径。两个路径都添加到配置属性->链接器->常规中的其他库目录中。移除其中一条路径解决了问题。
我将启用增量链接设置为"否"(/incremental:no),但它不适用于我。
接下来我改变了:
1 2 3 4 | Project Properties -> Configuration Properties -> General -> Platform Toolset ->"Visual Studio 2012 (v110)" |
它对我有用:)
我尝试了几次,最后通过卸载几次VS2010解决了这个问题。我想我没有卸载所有的文件,这就是为什么它第一次不能工作的原因。
在VS2012的安装中,据说如果您有VS2010 SP1,就不能在两个程序中处理同一个项目。建议只有一个程序。
谢谢!
我通过以下步骤解决了这个问题:
因此问题将永远消失。不要随意构建和调试C++项目。
在以前安装了Visual Studio 2010的计算机上安装了Visual Studio 2017和.NET Framework 4.6之后,出现了此问题。
问题是,在这样的安装之后,来自C:windowssystem32的msvcr100_clr0400.dll文件被一个非常小的大小~19kb的新文件覆盖,但是前一个文件的大小~800kb。
在我从另一台生成计算机cvtres.exe手动还原该文件后,它再次正常工作。
我使用WindowsSDK进行核心的win32编程,并安装了.NET 4.5,原因是"未知"。我已经卸载了它,并像以前的答案一样安装了4.0,是的,它也适用于我。
我不得不使用无用的.NET框架来构建使用SDK的Win32应用程序,这让我大吃一惊。
对于那些正在寻找OpenGLSuperbible第6个源代码示例的解决方案的人来说,该解决方案是在版本中构建,而不是在调试中。所有项目都禁用了版本中的增量链接选项。
在更新.NET之后,我遇到了同样的问题:我先卸载了.NET框架,已从VisualStudio.com下载Visual Studio并选择"修复"。
NET框架是用Visual Studio->自动安装的,现在可以正常工作了!
重新安装cmake对我很有用。cmake的新副本发现它应该使用Visual Studio 11而不是10。