Ori*_*rds 533 visual-studio-2010 visual-studio visual-studio-2012
我已经安装了Visual Studio 2012 Release Preview,看起来很好,但是现在当我尝试使用Visual Studio 2010编译C++项目时,我收到以下错误消息:
LINK:致命错误LNK1123:转换为COFF期间失败:文件无效或损坏
我不是百分之百确定这一点,但它似乎与其中包含.rc
(资源)文件的项目有关.
我尝试从添加/删除程序修复Visual Studio 2010并重新启动,但这没有任何效果.
如果在设置为使用Visual Studio 2010工具集时使用Visual Studio 2012 RC编译C++项目,我也会收到相同的错误.升级到Visual Studio 2011工具集可以解决问题(但我当然不希望为生产代码执行此操作).
更新:我已卸载Visual Studio 2012,重新启动,问题仍然存在!救命!
Sho*_*ort 653
此MSDN线程解释了如何解决它.
总结一下:
通过转到,禁用增量链接
Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
Run Code Online (Sandbox Code Playgroud)或安装VS2010 SP1.
编辑(@CraigRinger):请注意,安装VS 2010 SP1将删除64位编译器.您需要安装VS 2010 SP1编译器包才能将其恢复.
这会影响Microsoft Windows SDK 7.1 for Windows 7和.NET 4.0以及Visual Studio 2010.
Die*_*nte 250
如果禁用增量链接对您不起作用,并且关闭"Embed Manifest"也不起作用,则在路径中搜索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
.
Sid*_*Sid 50
检查版本cvtrs.exe
:
dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"
Run Code Online (Sandbox Code Playgroud)
错版:
date
:2010年3月18日
time
:下午1时16分
size
:31048个字节
name
:的Cvtres.exe
正确的版本:
date
:2011年2月21日
time
:下午6时03分
size
:31056个字节
name
:的Cvtres.exe
如果您的版本错误,则应从以下位置复制正确的版本:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe
Run Code Online (Sandbox Code Playgroud)
并替换这里的那个:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
Run Code Online (Sandbox Code Playgroud)
即
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"
Run Code Online (Sandbox Code Playgroud)
mlo*_*kot 46
根据MSDN论坛中的这个帖子:VS2012 RC安装打破VS2010 C++项目,简单来说,cvtres.exe
取自VS2010 SP1
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
Run Code Online (Sandbox Code Playgroud)
或者来自VS2012
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe
Run Code Online (Sandbox Code Playgroud)
并将其复制cvtres.exe
到VS2010 RTM安装中(没有SP1的安装)
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
Run Code Online (Sandbox Code Playgroud)
这样,您将有效地使用其更正版本cvtres.exe
为11.0.51106.1.
对64位版本的工具重复相同的步骤C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
.
此解决方案是安装SP1 for VS2010的替代方案 - 在某些情况下,您根本无法安装SP1(即,如果您需要支持SP1之前的版本).
B_D*_*b42 36
如果您已安装Visual Studio 2012 RC,则它安装了.NET 4.5 RC.
卸载.NET 4.5 RC,并安装所需的版本(适用于VS 2010的4.0).这应该可以解决您遇到的任何问题.
这解决了同样的问题.无需卸载Visual Studio.
Alo*_*uel 15
这是因为.NET Framework 4.5正在取代.NET Framework 4.0.我多次卸载Visual Studio 2010而没有运气.当我删除.NET Framework 4.5并重新安装Visual Studio 2010时,它很好.
请参阅完全卸载Visual Studio 11以执行全新安装.
Ori*_*rds 13
我通过完全卸载VS2012 RC,然后完全卸载VS2010,然后从头开始重新安装VS2010,解决了这个问题.
它花了很长时间,但我现在能够再次在VS2010中编译C++项目.
Ric*_*eck 13
如果你使用的是x64,这里的资源会有所帮助:
发生这种情况是因为Microsoft .NET 4.5与Visual C++ 10不兼容.解决方法是确保运行.NET版本的cvtres.exe而不是Visual C++版本.我这样做是通过重命名这些文件的Visual C++版本并在其位置复制.NET版本.
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
Run Code Online (Sandbox Code Playgroud)
Saj*_*aji 10
我没有安装Visual Studio 2012,但我在Visual Studio 2010中仍然遇到此错误.我在安装Visual Studio 2010 SP1后解决了这个问题.
我遇到了与Microsoft Visual Studio 2010 Ultimate相同的问题,它通过此YouTube视频中描述的方法解决了
视频显示的文件重命名的Cvtres.exe在C:\ Program Files文件(x86)的\微软的Visual Studio 10.0\VC\BIN (in my Win7X64 matchine)
到CVTRES,old.exe
+1给用户简短的回答对我有用!
我尝试对此进行一些调试,msbuild /v:diag
我发现MSBuild正在尝试在可执行文件中嵌入清单,在链接器命令行上使用<somename> .dll.embed.manifest.res,这是一个资源从<somename> .dll.embed.manifest构建的文件.但清单文件是一个空的Unicode文本文件.(也就是说,带有Unicode 0xFEFF前缀的双字节文件)
因此根本问题似乎与未生成的清单文件有关,或者在应该使用<somename> .dll.intermediate.manifest时使用它.
另一种解决方案似乎是关闭Properties,Manifest Tool,Input和Output下的"Embed Manifest"选项.
小智 5
总结一下:
Step1
Project Properties
-> Configuration Properties
-> Linker (General)
-> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
Run Code Online (Sandbox Code Playgroud)
如果步骤1不起作用,请执行步骤2
Project Properties
-> Configuration Properties
-> Manifest Tool (Input and Output)
-> Enable Incremental Linking -> "No"
Run Code Online (Sandbox Code Playgroud)
如果步骤2不起作用,请执行步骤3复制以下文件之一:
C:\ Program Files(x86)\ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
然后,替换为C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe跟我一起,执行3步即可工作
归档时间: |
|
查看次数: |
799541 次 |
最近记录: |