在Visual C++ 2010中尝试编译简单的C++代码时出现错误。

11 浏览
0 Comments

在Visual C++ 2010中尝试编译简单的C++代码时出现错误。

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

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

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

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

如果我将Visual Studio 2012 RC设置为使用Visual Studio 2010工具集来编译C++项目,我也会收到同样的错误。升级到Visual Studio 2011工具集可以解决此问题(但是我当然不想在生产代码中这样做)。

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

admin 更改状态以发布 2023年5月23日
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失败。(真的很烦人,错误消息与实际问题无关,但对于Microsoft产品来说这并不罕见。)只需删除/重命名实用程序的旧版本,或重新排列您的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