步骤一: 安装VS2010
错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
发生情况:VS成功安装之后,新建C++新项目,代码如下,运行调试
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"VS testing..."<<endl;
system("PAUSE");
return 0;
}
原因说明:
当安装VS2012之后,原来的.NET 4.0会被替换为.NET 4.5。卸载VS2012时,不会恢复.NET 4.0。
- 当VS2012安装后,VS2010的cvtres.exe就无法使用了。如果你的PATH环境变量中VS2010的工具路径第一个出现,而且链接器需要将.res文件转换为COFF 对象格式,就会导致LNK1123错误。
- 当VS生成PE文件头时,使用的cvtres.exe版本错误,不能与当前的.NET平台兼容。
解决方案:当前系统中存在两个cvtres.exe文件,版本不同。让VS2010使用.NET 4.5的cvtres.exe程序。
具体步骤:
重命名或删除:(vs2010安装的位置)C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
这样C:\Windows\Microsoft.NET\Framework\v4.0.30319 (.NET 4.5)中的cvtres.exe文件就可以被VS2010使用。
解决结果:调试成功、运行成功、成功显示“VS testing...”
步骤二:安装opencv及在VS2010中的配置
1. 编译好的opencv包直接放在一个位置上,比如:
C:\Program Files (x86)\下的文件夹中(或者可以用CMake来编译opencv源代码包,选择VS2010编译器编译,这样opencv的代码最后才能也用在VS项目中不出现错误)
2. 对应VS2010的相应opencv编译过的代码在
C:\Program Files (x86)\opencv\build\x86\vc10中,里面分别有bin、lib、staticlib文件夹,其中bin所在的文件夹路径需要加入到计算机的系统环境变量中去,将C:\Program Files (x86)\opencv\build\x86\vc10\bin加入到用户变量和系统变量的path中(用户变量表示当年用户可以进行操作使用,系统变量对所有用户都适用)
3. VC++目录配置
可执行文件目录:C:\Program Files (x86)\opencv\build\x86\vc10\bin
包含目录:C:\Program Files (x86)\opencv\build\include;C:\Program Files (x86)\opencv\build\include\opencv;C:\Program Files (x86)\opencv\build\include\opencv2;
库目录:
C:\Program Files (x86)\opencv\build\x86\vc10\lib;C:\Program Files (x86)\opencv\build\x86\vc10\staticlib;
4. 链接器->输入->依赖项配置
加入:
opencv_calib3d231d.lib;opencv_contrib231d.lib;opencv_core231d.lib;opencv_features2d231d.lib;opencv_flann231d.lib;opencv_gpu231d.lib;opencv_highgui231d.lib;opencv_imgproc231d.lib;opencv_legacy231d.lib;opencv_ml231d.lib;opencv_objdetect231d.lib;opencv_ts231d.lib;opencv_video231d.lib;
%(AdditionalDependencies)
注意:
a)以上的%(AdditionalDependencies)不能被去除,否则项目不能成功调试,而且这种错误又很难找到。
b)在附加依赖项的窗口里,保持“从父级或项目默认设置继承”的选