问题归纳:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

        前几天通过重新编译opencv的源代码查看其内部函数,在台式机上获得成功,却无法在自己的笔记本上编译成功。经历了卸载VS2010后打开opencv的sln文件,编译中出现LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏,经过搜寻资料与实际验证总结解决方案。

      其中http://bbs.csdn.net/topics/390121452的25楼给出了解决方案。摘录如下:

     终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是没新建一个项目都要这样设置一次。
    在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:
    第一步:与上相同。
    第二步:将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”。
    第三步:一般计算机经过上两步设置就能解决问题了,但是如果还有问题,那就按一下方法解决:
    计算机是否为64bit操作系统,如是,继续2。
    查找是否有两个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。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。
意外的是,治本的办法是第三步,删除旧版本的cvtres.exe后,就不需要每次都设置配置了。

    在https://msdn.microsoft.com/zh-cn/library/7dz62kfh.aspx中提供的解决方案如下:

    将所有服务包和更新应用到你的 Visual Studio 版本。 这对于 Visual Studio 2010 尤为重要。

    禁用了尝试使用增量链接生成。 在菜单栏上,依次选择“项目”、“属性”。 在“属性页”对话框中,依次展开“配置属性”、“链接器”。 将“启用增量链接”的值更改为“否”。

    验证在 PATH 环境变量中首次发现的 CVTRES.EXE 版本是否与由你的项目使用的生成工具的版本或平台工具集的版本相匹配。

    确保文件类型有效。 例如,确保 OMF 对象是 32 位而不是 16 位。

    确保文件未损坏。 如有必要,请重新生成。

    vs2010中下的解决方案是安装sp1的补丁。补丁下载地址:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=23691

    最终是通过安装sp1的补丁直接解决。MSDN解释该问题的原因在于:输入文件必须具有通用对象文件格式 (COFF) 格式。 如果输入文件不是 COFF,LINK 则链接器会自动尝试将 32 位 OMF 对象转换为 COFF,或运行 CVTRES.EXE 来转换资源文件。 此消息指示链接器不能转换该文件。 从另一个安装的 Visual Studio、Windows 开发工具包或 .NET Framework 中使用不兼容的 CVTRES.EXE 版本时,也会出现此情况。

    个人认为原因在于cvtres.exe的版本问题,sp1在更新当中解决了该问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值