vs2010 出错:error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(转)

VS2010 LNK1123错误解决方法

“LNK1123:转换到 COFF期间失败:文件无效或损坏”的解决方法

 

一、错误描述

之前写的程序隔段时间使用VS2010再次运行时出现如下错误:

LINK fatal error LNK1123转换到 COFF期间失败文件无效或损坏

 

二、解决方法

百度了一下此问题的解决方法,逐个试了一下发现有些顽固,并没有一次成功,所以将整个步骤结合自己的处理总结如下。

1.修改项目属性

项目—属性—配置属性—清单工具—输入输出—嵌入清单,改为“否”

 

 


大部分方法说这种处理应该可以解决,但每次新建工程都需要如此配置。如果发现问题仍未解决,那么可以尝试一下两种方法。

2.用新版cvtres.exe替换旧版本的cvtres.exe

由于连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题。搜索本机C盘cvtres.exe找到如下结果:

 

 

 

使用C:\Windows\winsxs文件夹中的较新版“cvtres.exe”替换掉..\Microsoft Visual Studio 10.0\VC\bin中的同名文件,如不放心可以将原文件改名为“cvtres1.exe”,如下图所示。

 

 

 

3.直接删除旧版本的cvtres.exe

如问题仍未解决,可以将Microsoft Visual Studio 10.0\VC\bin中的cvtres.exe直接删除或改名后不要复制新版的cvtres.exe进入该文件夹。

再次运行程序,问题解决。有没有副作用,有待观察...

 

P.S. 按照上述方法解决后,正常使用12天后未发现问题。
---------------------
作者:iracer
来源:优快云
原文:https://blog.youkuaiyun.com/iracer/article/details/51138135
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/xihong2014/p/11043683.html

<think>好的,用户遇到了Visual Studio编译错误LNK1123,需要解决这个问题。首先,我得回忆一下之前处理类似问题的经验。根据引用内容,这个错误通常和cvtres.exe的版本冲突者清单文件设置有关。 首先,用户可能安装了多个VS版本.NET版本,导致系统中有不同版本的cvtres.exe。需要检查两个路径:Program Files下的VS目录和Windows下的.NET目录。如果发现不同版本,可能需要删除旧的那个。另外,用户可能需要调整项目属性中的嵌入清单选项,将其设为“否”,这样可以避免生成COFF时的冲突。 接下来,考虑用户可能的操作环境。如果是64位系统,路径可能稍有不同,需要确认是否正确。此外,用户可能在新建项目时没有修改默认设置,导致每次都要手动调整,这时候可能需要更彻底的解决方法,比如更新VS.NET框架,者调整系统路径确保使用正确的cvtres.exe版本。 还要注意用户是否已经尝试过一些方法但未成功,比如只修改了清单工具设置,但未处理连接器的嵌入清单选项。需要分步骤指导,确保每一步都清楚,避免遗漏。 最后,考虑到用户可能不太熟悉技术细节,需要用简单易懂的语言解释COFF和cvtres.exe的作用,以及为什么版本冲突会导致问题。同时,提供多种解决方案,让用户可以根据具体情况选择最适合的方法。比如,先尝试修改项目设置,如果不行再处理文件更新系统组件。</think>### LNK1123错误解决方案分步说明 **错误原因**:该错误通常由资源转换工具`cvtres.exe`版本冲突清单文件配置不当引发[^2][^3]。COFF(通用对象文件格式)转换失败意味着编译器无法正确处理资源文件到.obj文件转换。 **核心解决方法**(按优先级排序): 1. **修改项目属性** - 打开项目属性 → 配置属性 → 清单工具 → 输入和输出 → 将"嵌入清单"设为`否` - 同时检查:连接器 → 清单文件 → 将"生成清单"设为`否` - 注:每个新项目需重复此设置 2. **清除冲突的cvtres.exe** ```powershell # 检查以下两个路径的cvtres.exe版本 C:\Program Files (x86)\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe ``` 通过右键属性查看详细信息,保留较新版本(通常保留.NET目录下的文件),重命名删除旧版本[^2] 3. **系统级修复** - 更新Visual Studio 2010至SP1补丁包 - 安装.NET Framework 4.5+运行时 - 在环境变量PATH中将新版cvtres.exe路径置顶 **技术原理**: COFF转换涉及将.res资源文件通过`cvtres.exe`转换为.obj文件,当存在多个版本工具时,旧版可能无法识别新版VS生成的中间文件格式,导致转换失败。修改清单设置实质是跳过资源文件COFF转换阶段。 **验证方法**: 修改后重新生成解决方案,观察输出窗口是否出现"Embedding manifest..."字样。成功编译应显示: ``` 生成成功: 1 已成功,0 已失败 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值