安装了Visual Studio 2012 Release Preview后出现“错误'LINK:致命错误LNK1123:转换为COFF时失败:文件无效或损坏”。

33 浏览
0 Comments

安装了Visual Studio 2012 Release Preview后出现“错误'LINK:致命错误LNK1123:转换为COFF时失败:文件无效或损坏”。

我安装了Visual Studio 2012 Release Preview,看起来一切正常,但现在当我尝试使用Visual Studio 2010编译C++项目时,出现以下错误信息:

LINK: fatal error LNK1123: 在转换为COFF期间失败:文件无效或损坏

我不能确定这一点,但似乎与具有.rc(资源)文件的项目有关。

我尝试从“添加/删除程序”中修复Visual Studio 2010并重新启动,但这对它没有影响。

如果我使用Visual Studio 2012 RC编译C++项目并设置为使用Visual Studio 2010工具集,则也会出现相同的错误。将工具集升级至Visual Studio 2011可以解决该问题(但当然我不想对生产代码执行此操作)。

更新:我已卸载Visual Studio 2012并重新启动,但问题仍然存在!救命啊!

admin 更改状态以发布 2023年5月22日
0
0 Comments

如果禁用增量链接对你不起作用,关闭"嵌入清单"也不起作用,请在路径中搜索多个CVTRES.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版的cvtres.exe将不再起作用。 如果这是路径中的第一个版本,并且链接器决定需要将.res文件转换为COFF对象格式,则链接将以LNK1123失败。

(真是令人讨厌的错误消息与实际问题无关,但对于微软产品而言这并不罕见。)

只需删除/重命名实用程序的旧版本,或重新排列PATH变量,以使有效的版本首先出现。

请注意,对于x64工具生成,您还必须检查C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \amd64 ,其中还有另一个cvtres.exe

0
0 Comments

此MSDN讨论主题解释了如何修复它。

总结一下:

  • 要么禁用增量链接,方法是:

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

  • 要么安装VS2010 SP1。

编辑(@CraigRinger):注意,安装VS 2010 SP1将删除64位编译器。您需要安装VS 2010 SP1编译器包来恢复它们。

这会影响Microsoft Windows SDK 7.1 for Windows 7 and .NET 4.0以及Visual Studio 2010

0