在没有安装OpenCV的电脑上,要运行基于opencv库的程序,有两种方法:
一、动态链接:将OpenCv安装目录下的bin目录下的.dll文件与应用程序一起打包发布;
二、静态链接:将OpenCV库源代码先用cMake进行编译,然后将opencv库的源文件加到工程中一同编译,最后生成的可执行文件可以单独运行,不需要OpenCV的动态链接库。
我选用的是第一种方法,动态链接,dll调用其中包括隐式调用和显示调用,可以参见之前的博文介绍
http://blog.csdn.net/piaoxuezhong/article/details/61201785
1 隐式调用:
声明函数接口的.h文件:将opencv\build\include文件夹拷贝到工程目录下,并将它放在工程属性的包含目录下;
链接动态库的.lib文件:将opencv\build\x86\vc12中lib文件夹里的内容以及bin文件夹拷贝到工程目录下,并将它放在工程属性的库目录下。
链接动态库的.dll文件:将opencv_ts300d.dll,opencv_world300d.dll添加到链接器的输入目录中。
编写程序时,即可正常使用opencv库函数了。
显示调用是不需要.lib和.h文件的。是在代码里“显示”加载要用到的函数。例如:
HINSTANCE hDLL=NULL;//生命DLL句柄
hDLL=LoadLibrary("opencv_core242d.dll"); //加载DLL
HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread"); //使用DLL中的函数
拷贝工程时只拷贝用到的DLL文件就可以,但这样DLL换个名字版本之类的要改很多地方,推荐用隐式调用。
参考:
http://blog.csdn.net/xiaowei_cqu/article/details/8066329
http://www.cnblogs.com/vincent2012/archive/2013/10/14/3369427.html