一直以来大部分C++程序都是在VC6.0上完成的,使用起来简单方便。但现如今,连windows都开始进入Win8时代,再用VC6.0,就不够土豪了。今日试试使用VS2010+OpenCV来编程,不曾想一顿“下一步”后,编译运行程序时就出现华丽丽的“LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt”。幸好在VC6.0下对fatal error和LNK***见怪不怪了。所以随手Google一下,找到多种答案,逐一试之,找到如下正确答案。
这个链接错误是VC10在调用cvtres.exe程序将resource资源文件,也就是那些图标呀、对话框等等一类的文件,转换成COFF格式文件时报出的错误。也就是cvtres.exe有问题(据回答者说,是他用/VERBOSE选项调试时跟踪错误到cvtres.exe的,自愧不如,俺只会Google)。然后搜索cvtres.exe,发现操作系统中有多个cvtres.exe,例如,在我的电脑里就有多个,其中两个是:
1.E:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
2.C:\Windows\Microsoft.NET\Framework64\v2.0.50727
VC10编译器必然调用的是第一个,但是呢,当安装VS2010的时候,如果你顺便也安装了.NET 4.0的话,那么第一个就失效了。因此需要用第二个路径里面的cvtres替换第一个路径里面的。完成替换后,在编译链接后就可以顺利运行了。
参考可以点这里牛人出没的stackoverflow。
顺便吐槽一句,现在早是64位的天下了,VS2010竟然没有64位版本,不过也可能当时64位还不盛行。