工作环境:
IDE:Microsoft Visual Studio 2008
Opencv版本:Opencv2.1
操作系统:Windows 7
前言:之前为了能在没装vs2008和opencv的电脑上面运行自己写的opencv程序,真是花了九牛二虎之力,因为之前在网上查到的资料都是教你怎么生成opencv的静态库,比如http://blog.csdn.net/sophisticated/archive/2011/03/09/6234943.aspx这篇博客里面方法,我也不是说他的方法有错,只是我是用里面的方法生成那些库怎么都无法成功编译,都在链接那里出现error,还有就是vfw32.lib videoinput.lib这两个库文件是用这个博文的方法是无法生成的,由于多次尝试静态库未果,果断抛弃。后来我又上网找了一些资料,据说能用动态库来生成其他电脑上也能运行的opencv程序,下面我来详细说明。
我们都知道,vs2008编译项目有两个版本:Debug和Release,这里我们在Release下生成exe文件,为什么要在Release下面生成呢,原因是你在Debug模式下生成的exe需要vs2008的一些Debug库文件支持,就是说你在没有vs2008的机子上是无法正常运行的,所以要在Release模式下面编译项目。
步骤:
1、把工程调成Release模式。
2、右键项目->属性 打开项目属性页面,首先在配置属性->常规页面,如果你是MFC程序,那在“MFC的使用”那选择“在静态库中使用MFC”。然后在配置属性->C/C++ ->代码生成页面,“运行时库”里面选“多线程(/MT)”。
3、然后生成重新解决方案,生成了之后会在项目的Release文件夹下面看到一个exe文件和一个pdb文件(注意:这不是用静态库生成的)。
4、打开opencv2.1的安装目录,在“安装路径”OpenCV2.1bin目录下将所有的Release版本的动态库文件拷贝到Release文件夹里面,跟exe文件放在一起。这样你的程序就可以在其他电脑上面运行了。
小插曲:我运行的时候发现一个问题,Debug模式下生成的exe文件跟Release模式下生成的exe文件运行效果有可能不一样,我的原因是有些变量没有初始化,在Release模式下编译是经过优化的,有些没有初始化的变量就导致运行结果不一样。