visual-studio-2010 - Error 'LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt'after installing Visual Studio 2012 Release Preview

  显示原文与译文双语对照的内容

我已经安装了 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线程解释如何修复它。

总结:

  • 禁用增量链接,方法是

    
    Project Properties 
     -> Configuration Properties 
     -> Linker (General) 
     -> Enable Incremental Linking ->"No (/INCREMENTAL:NO)"
    
    
  • 或者安装 VS2010 SP1.

编辑( @CraigRinger ): 注意安装 vs 2010 SP1将移除 64位 编译器 。 你需要安装 vs 2010 SP1编译器包以使它们返回。

这将影响微软 Windows 开发工具包用于 Windows 7.1 7和. NET 4.0 以及 Visual Studio 2010

如果禁用增量链接对你不起作用,并且关闭"嵌入清单"也不起作用,那么搜索你的路径以获得多个版本的CVTRES.exe.

通过使用/VERBOSE 链接器选项调试发现链接器在尝试调用cvtres时正在写入该错误消息,但失败。

结果我在我的路径中有两个版本的这个工具。 一个位于 C:Program Files (x86)Microsoft Visual Studio 10.0VCBINcvtres.exe 还有一个 C:WindowsMicrosoft.NETFrameworkv4.0.30319cvtres.exe 在VS2012安装之后,VS2010的cvtres.exe 版本将不再工作。 如果这是你的路径中的第一个,链接器决定将. res 文件转换为COFF对象格式,那么链接将失败,LNK1123 。

( 错误消息与实际问题无关,但对于微软产品来说这并不奇怪) 。

只需删除/重命名该工具的旧版本,或者re-arrange你的路径变量,这样就可以找到工作的版本。

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

卸载. NET 4.5 RC,并安装你需要的版本( 4.0用于 vs 2010 ) 。 这应该能解决你遇到的任何问题。

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

根据MSDN论坛中的这个线程: 在 vs2010sp1 SP1, VS2012 RC安装符 vs2010sp1 C++ 项目,只需,花 cvtres.exe


C:Program Files (x86)Microsoft Visual Studio 10.0VCbincvtres.exe

或者从英镑 VS2012


C:Program Files (x86)Microsoft Visual Studio 11.0VCbincvtres.exe

并复制它除以 cvtres.exevs2010sp1 RTM 安装( 无 sp 1 那个)


C:Program Files (x86)Microsoft Visual Studio 10.0VCbincvtres.exe

这样,你就可以有效地使用 cvtres.exe的修正版本,它是 11.0.511 06.1.

对 64位 版本的工具重复相同的步骤 C:Program Files (x86)Microsoft Visual Studio 10.0VCbinamd64cvtres.exe

这个解决方案是安装 web sphere的一个替代方案- 在某些情况下,你不能安装 SP1 ( 例如 。 如果你需要支持pre-SP1构建) 。

转到 C:Program 文件( x86 ) Microsoft Visual Studio 10.0 VCbincvtres.exe

并检查 cvtres.exe的版本:

错误的版本:
date: 03/18/2010
time: 01: 16 PM
size: 31,048字节
name: cvtres.exe

正确的版本:
date: 02/21/2011
time: 06: 03 PM
size: 31,056字节
name: cvtres.exe

如果你的版本有误,你应该去


C:Program Files (x86)Microsoft Visual Studio 11.0VCbincvtres.exe

然后复制 cvtres.exe,然后用


C:Program Files (x86)Microsoft Visual Studio 10.0VCbincvtres.exe

这是因为 .NET 框架 4.5正在取代. NET 框架 4.0. 我已经多次卸载 Visual Studio 2010,但没有成功。 当我删除. NET 框架 4.5并重新安装 Visual Studio 2010时,它运行良好。

请参见 卸载 Visual Studio 11 completely全新安装

对我来说,将'生成清单'设置为'没有'就会修复它。 ( 还固定了/增量:否)

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

它花费了一辈子,但是现在我可以在VS2010中编译 C++ 项目了。

通过删除 .NET 4.5,我奇迹般地解决了这个问题,并将它的替换为. NET 4.0. 然后我不得不修复 Visual Studio 2010 - 它在某种程度上被破坏了。

我曾经安装过,然后是 un-installed,Visual Studio 2012 - 这可能与问题相关。

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

...