用VS2010进行CMAKE的时候“LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”

时间:2021-02-05 20:31:53

由于要编译LTP,LTP在MINGW下又不能编译,所以忍痛安装了VS2010+CMAKE。

由于VS在本科时候虐我千百遍,所以一直心存阴影。。。

转入正题,当cmake的时候, 它提示 “LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏”

于是上网搜结果,基本上都是“VS 2010下,打开实例的时候出现错误”,附带传送门 http://bbs.csdn.net/topics/390121452

解决方案也传送到这里:

“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\v
4.0.30319\cvtres.exe。右键属性|详细信息 查看两者版本号,删除/重命名较旧的版本,或者重新设置Path变量。

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

但是但是!!咱们用的是CMAKE又不是VS2010的时候出的问题,所以我们还是得从源头找问题。

转折点是在http://blog.csdn.net/rryr2/article/details/8221357里面说到的,

VS2010和VS2012或者sv2008和VS2010,高版本VS编译都会出现,使用VS2008的D:\Program Files\Microsoft Visual Studio 9.0\VC\bin目录下的cvtres.exe替换到VS2010版本VS目录下再编译成功。

他提示VS不同版本直接的cvtres不一样,如果低版本的工程用高版本打开时会有标题中说的问题。又得知LTP是在VS2008里面编译的,所以把VS2008里的cvtres.exe拷到VS2010里面。cmake成功,搞定。