今天编译某工程时出现错误提示:
LINK :fatal error LNK1123:failure during conversion to COFF: file invalid or corrupt
COFF –通用对象文件格式(Common Object File Format),是一种很流行的对象文件格式,VC所产生的目标文件(*.obj)就是这种格式[1]。VC在链接时,输入文件必须是COFF。但是如果输入文件不是该格式,VC会使用CVTRES.EXE将输入文件转化成COFF格式 [2]。这个错误提示的意思即为在链接时不能将格式转化为COFF。
微软对该错误给出的解释是由于计算机中先后安装了VS2010和VS2012所致[3],可以通过安装VS2010SP1解决。由于本人机器已经是VS2010SP1了(当时没考虑要不要重装sp1的问题),故寻求其他解决问题的途径。国外一些大侠认为在安装VS2012时,安装程序把"C:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin"目录下的所有内容替换成了RTMRelversion (10.0.30319.1)版本,并建议将该目录下CVTRES.EXE改回VS 2010 SP1 (10.0.40219.1) 版本[4]。哪里去找这个“对”的CVTRES.EXE文件呢?发现国内已有类似解决方案,即将CVTRES.EXE文件替换[5]。从[5]下载了CVTRES.EXE,问题解决。
[1]http://baike.baidu.com/view/1240794.htm
[2]http://msdn.microsoft.com/en-us/library/7dz62kfh.aspx