如何修复:错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏。

21 浏览
0 Comments

如何修复:错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏。

我安装了Visual Studio 2012 Release Preview,看起来很好,但现在当我尝试使用Visual Studio 2010来编译C ++项目时,我收到以下错误消息:

LINK:致命错误LNK1123:转换为COFF时失败:文件无效或损坏

我不是100%确定,但似乎与拥有 .rc (资源)文件的项目有关。

我已经尝试从添加/删除程序中修复Visual Studio 2010并重新启动,但这没有效果。

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

更新:我已卸载Visual Studio 2012,重新启动,问题仍然存在!求助!

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

如果禁用增量链接对你不起作用,而关闭"嵌入清单"也不起作用,请搜索你的path路径,查找多个版本的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