1. 主页 > vs安装问题 > VS2017安装问题 >

c++中出现error LNK1123: 转换到 COFF 期间失败的错误

Microsoft Visual Studio 2010 - Visual Studio 2010

下载地址(中文):http://www.cr173.com/soft/11484.html

或者是(官方):http://www.microsoft.com/visualstudio/zh-cn

安装时如果不注意,用默认的方式安装下去的话至少会占用5.8G的硬盘空间,而且一般都是安装在系统盘。

1.在安装之前有必要检查本机是否安装net Framework4和VC Runtime;

2.打开VS2010安装程序目录,双击“autorun.exe”程序

3.稍等一会安装程序打开安装界面,点击“安装Microsoft Visual Studio 2010”

4.由于安装组件多,所以接下来安装程序加载过程比较慢

5.安装组件加载完毕后我们点击“下一步”按钮开始安装步骤了

6.选择“已阅读”单选项,左侧会显示安装环境,点击“下一步”按钮

7.由于我们不需要全部的组件,所以点击“自定义”单选项,再点击“下一步”按钮

8.在左边选择需要的开发组件即可,取消不需要安装的项

9.根据所选项的不同,接下来正式安装时会耗时较长,很需要耐心等待了

10.根据安装的程序异同,在安装过程中可能会要求重启

11.重启电脑后同样要以管理员帐号登录电脑,然后继续安装,完成后会提示安装成功,直接点击“完成”按钮即可

12.返回安装程序的安装界面,点击“退出”按钮

13.再点击“开始”菜单,选择“所有程序”,有“Microsoft Visual Studio 2010”项,选择里面的“Microsoft Visual Studio 2010

14.程序启动稍慢,稍等一会即可

15.由于是初次使用,所以会弹出选择开发环境的界面,选择自己适合的开发环境即可


在运行c++中出现error LNK1123: 转换到 COFF 期间失败的错误,这是很多人遇到的问题,从网络上收集了答案,下面的三种解决方案算是最全的了。

解决方案1:
原来机器上安装了VS2010非常正常,安装VS2012后,出现提示
错误    13    error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏,如图:
 出现的具体原因是微软的链接文件的格式变了(让人无语的微软)
 
微软官方给出的具体解决方法是给VS2010打SP1补丁。
下载地址是:http://www.microsoft.com/en-us/download/details.aspx?id=23691

 

解决方案2:
是嵌入清单的问题,于是对该工程以及所有依赖工程进行如下操作
右键->工程属性->配置属性-> 清单工具->输入和输出->嵌入清单,选择[否]

1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>CVTRES : fatal error CVT1100: 资源重复。类型: MANIFEST,名称: 1,语言: 0x0409

这个是由于日志文件引起的,可以将

项目\属性\配置属性\清单工具\输入和输出\嵌入清单:原来是“是”,改成“否”。

或者将

项目\属性\配置属性\链接器\清单文件\生成清单:原来是“是”,改成“否”。

 

我总结了下这个效果的处置方法:

1:假设名目是一个静态库,或许说,名目中没有本质的资源文件的时候,将嵌入清单改成“否”是可能处置的。

2:假设名目已有了资源文件,将嵌入清单改成“否”是不行能处置效果的,除非你同时把这些资源文件移除掉。

论断,确保名目中没有资源文件的存在,且把嵌入清单改成“否”可能处置该效果,但这确实也失掉了资源文件的作用,没措施,谁让他是个Bug呢。

 

解决方案3: 

使用VS2012编译支持XP的MFC程序

November 28, 2012, 16:31  Posted by   Posted in [Channel 8]

Visual Studio 2012发布一段时间了,使用起来感觉也不错。但是最近写一个小程序却遇到了比较麻烦的事情。

这个程序是使用Visual Studio 2012编写的MFC应用程序,编译后一直在Win7系统中Debug和运行,一切都正常。但是放到XP或2003等系统中运行就会提示“not a valid win32 application”。一开始以为文件损坏了,后来copy几次发现问题依旧。

然后搜索,发现有很多人提到了这个问题,主要是由于VS2012的原因,编译的程序不再支持XP了。不过MS官方也提到将发布一个补丁解决此问题。最初该补丁是包含在Visual Studio 2012 update 1 CTP 3中。搜索这个包发现已经不存在,后来才发现,在26号(也就是1天多之前)的时候已经发布了Visual Studio 2012 update 1的正式版,于是下载安装。

按照官方给出的提示,安装成功之后,打开VS2012,在项目上属性中,应该会存在配置属性-常规-平台工具集中出现“Visual Studio 2012 (v110 XP)”。非常遗憾的是这个Update 1的包是在线安装的,总是有一个包下载不下来,安装几次也无济于事。

无奈之下重新安装了一个Visual Studio 2010,不过将原来的工程再转为2010的工程就太麻烦了。好在这个时候从2012中再看工程的属性时,平台工具集中已经出现“Visual Studio 2010 (v100)”和“Visual Studio 2008 (v90)”了。于是重新生成工程,编译,然后就又出了问题。

这时遇到的问题是“LINK : fatalerrorLNK1123:转换到COFF期间失败: 文件无效或损坏”。继续搜索,发现这个问题也很常见,处理方法也比较一致,就是继续设置工程的属性,配置属性-清单工具-输入和输出-嵌入清单-否。

按照这个方法设置之后发现依旧不好用,可是貌似网上其他人都用此方法解决了问题啊,奇怪。后来突然发现系统右下角出现了Visual Studio 2010 sp1补丁的安装通知。想着可能以后还要用2010,于是拿以前下载好的sp1安装包安装。然后再次尝试,惊喜地发现问题居然解决了,终于编译出了可以在XP和2003中运行的MFC程序。

总结一下,就是安装VS 2010及其SP1,设置属性的嵌入清单为否,平台工具集为2010,重新生成即可。

其实这个也就是临时急着解决问题用的,估计过几天VS2012 update 1的网络安装稳定了,就可以直接使用2012的工具集编译出支持XP和2003的程序了。

 

 解决方案4:

微软的东西就是这样,一旦出了问题,你只能选择重装,甚至是重装系统。我也采用这种笨方案。不过凭感觉可能与我以前在D盘安装过vc有关,有可能覆盖安装导致某些文件被破坏。于是我先卸载了VC,然后把文件夹D:/program files/Viusaul studios删除掉,以前就是安装的这个目录。然后重启电脑,重新安装了一下。又重新打开小项目,编译,通过了。

 

总结: 这些方法是从网上搜来整理的,经过我测试,方法2会起作用,但是我测试的三个项目,有一个项目始终不行,用方案1下载一个sp1包(约600M),安装后,重启,打开VS按照vs的弹出框提示安装其他补丁后,重新编译,问题解决!


最根本的解决:

很多伙伴在更新VS2010,或者卸载VS2012安装2010后,建立Win32 Console Project/MFC项目时会出现"LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏"的错误。


错误描述:

1>正在编译资源...
1>正在编译资源清单...
1>正在链接...
1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
1>生成日志保存在“file://E:\HelloC\ShapeFill V11\ShapeFill\Debug\ShapeFill.log”
1>ShapeFill- 1个错误,0个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========


解决方案:

 第一步:将 项目——项目属性——配置属性——连接器——清单文件——嵌入清单 “是”改为“否”。若还不能解决问题进入第二步。

第二步:查看计算机是否为64bit操作系统,如是,继续如下操作。
查找是否有两个cvtres.exe。推荐用Everything文件搜索工具。
C:\Program Files(x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
右键属性—详细信息, 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

 

治本的办法是第二步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。


本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2017anzhuangwenti/2020/0725/5211.html

联系我们

在线咨询:点击这里给我发消息

微信号:PREEE8

工作日:9:30-18:30,节假日休息