Visual studio 2010 错误';链接:致命错误LNK1123:转换为COFF期间失败:文件无效或损坏';安装Visual Studio 2012版本预览后
我安装了VisualStudio 2012发布预览,它看起来很好,但是现在当我尝试使用VisualStudio 2010编译C++项目时,我得到以下错误信息: 链接:致命错误LNK1123:转换为COFF期间失败:文件无效或损坏 我不是100%肯定这一点,但它似乎与包含Visual studio 2010 错误';链接:致命错误LNK1123:转换为COFF期间失败:文件无效或损坏';安装Visual Studio 2012版本预览后,visual-studio-2010,visual-studio,visual-studio-2012,Visual Studio 2010,Visual Studio,Visual Studio 2012,我安装了VisualStudio 2012发布预览,它看起来很好,但是现在当我尝试使用VisualStudio 2010编译C++项目时,我得到以下错误信息: 链接:致命错误LNK1123:转换为COFF期间失败:文件无效或损坏 我不是100%肯定这一点,但它似乎与包含.rc(资源)文件的项目有关 我尝试过通过添加/删除程序和重新启动来修复VisualStudio2010,但没有效果 < >我也会得到同样的错误,如果我使用VisualStudio 2012 RC编译C++项目,当设置为使用Vis
.rc
(资源)文件的项目有关
我尝试过通过添加/删除程序和重新启动来修复VisualStudio2010,但没有效果
< >我也会得到同样的错误,如果我使用VisualStudio 2012 RC编译C++项目,当设置为使用VisualStudio 2010工具集时。升级到VisualStudio2011工具集解决了这个问题(但我当然不想对生产代码这样做)
更新:我已卸载Visual Studio 2012并重新启动,但问题仍然存在!救命啊 我最终解决了这个问题,完全卸载了VS2012 RC,然后完全卸载了VS2010,然后重新安装了VS2010
它已经花了很长时间,但是我现在又能在VS2010中编译C++项目了。
解释如何修复它。 总结如下:
- 通过转到,禁用增量链接
Project Properties -> Configuration Properties -> Linker (General) -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
- 或者安装VS2010 SP1
这会影响Microsoft Windows SDK 7.1 for Windows 7和.NET 4.0以及Visual Studio 2010。我尝试了几次,最后通过多次卸载VS2010解决了这个问题。我想我没有卸载所有的文件,这就是为什么它第一次不起作用 在VS2012的安装过程中,据说如果你有VS2010 SP1,你就不能在两个程序中处理同一个项目。建议只有一个程序 谢谢 这是因为Framework4.5正在取代.NETFramework4.0。 我卸载了VisualStudio2010好几次,但都没有成功。当我删除.NETFramework4.5并重新安装VisualStudio2010时,一切正常
请参阅。如果您已安装Visual Studio 2012 RC,则它已安装.NET 4.5 RC 卸载.NET 4.5 RC,并安装所需的版本(VS 2010为4.0)。这应该可以解决您遇到的任何问题
这解决了同样的问题。无需卸载Visual Studio。对于我来说,将“生成清单”设置为“否”可以修复此问题。(也修复了/INCREMENTAL:NO)+1对用户的缩写,因为它对我有用 我试图用
msbuild/v:diag
对此进行一些调试,我发现它正在尝试在可执行文件中嵌入清单,链接器命令行上有.dll.embed.manifest.res,其中是从.dll.embed.manifest生成的资源文件。但是清单文件是一个空的Unicode文本文件。(即,具有Unicode 0xFEFF前缀的两字节文件)
因此,根本问题似乎与未生成清单文件有关,或者与应使用.dll.intermediate.manifest时使用该清单文件有关
另一种解决方案似乎是关闭属性、清单工具、输入和输出下的“嵌入清单”选项。我将启用增量链接设置为“否(/Incremental:No)”,但它对我不起作用 接下来我改变了:
Project Properties
-> Configuration Properties
-> General
-> Platform Toolset -> "Visual Studio 2012 (v110)"
它对我有效:)通过删除4.5并用.NET4.0替换它,我神奇地解决了这个问题。然后,我不得不修复VisualStudio2010——它在某种程度上被破坏了
我以前安装过Visual Studio 2012,然后又取消安装,这可能与此问题有关。我没有安装Visual Studio 2012,但在Visual Studio 2010中仍然出现此错误。我在安装Visual Studio 2010 SP1后解决了这个问题。如果禁用增量链接对您不起作用,而关闭“嵌入清单”也不起作用,请在您的路径中搜索多个版本的CVTRES.exe 通过使用/VERBOSE链接器选项进行调试,我发现链接器在尝试调用cvtres时正在写入错误消息,但失败了 事实证明,我的路径中有两个版本的该实用程序。一个位于
C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
,另一个位于C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
。安装VS2012后,cvtres.exe的VS2010版本将不再工作。如果这是路径中的第一个,并且链接器决定需要将.res文件转换为COFF对象格式,则链接将因LNK1123而失败
(错误消息与实际问题无关,这确实令人恼火,但这对于Microsoft产品来说并不罕见。)
只需删除/重命名较旧版本的实用程序,或重新排列PATH变量,以便首先使用有效的版本
请注意,对于x64工具构建,您可能还必须根据MSDN论坛中的以下线程检查
C:\ProgramFiles(x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
,其中存在另一个cvtres.exe
,只需从VS2010 SP1获取cvtres.exe即可
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
或从VS2012开始
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe
并将其复制到VS2010 RTM安装中的cvtres.exe
(不带SP1的)
这样,您将有效地使用正确版本的cvtres.exe
,即11.0.51106.1
对C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe中的64位版本的工具重复相同的步骤
此解决方案是安装的替代方案
dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"
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
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"
LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
Error 6 error LNK1104: cannot open file 'msvcrtd.lib'.
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
Step1
Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
Project Properties
-> Configuration Properties
-> Manifest Tool (Input and Output)
-> Enable Incremental Linking -> "No"