静态编译opencv

来源:互联网 发布:中国大数据公司排名 编辑:程序博客网 时间:2024/06/05 04:32

        opencv确实是图像处理里最实用的库,拥有非常全面的算法,还有很多大牛的不断更新,每一次的新版本都会更新时下很流行且有效的算法。且具有一定的时时性。opencv能够支持各个系统,包括手机安卓或IOS,使用起来非常方便。

        实际使用中,考虑到可执行文件的平台兼容性,如果选择动态编译(动态编译opencv的方法网上有非常多,这里就不介绍了,可以参考:opencv动态编译方法),在可执行文件夹下需要添加相应的dll文件。有时想要将代码编译进exe,则需要静态编译opencv。以下是我用opencv2.4.9成功的静态编译,但是同样的方法用opencv2.1却并没有成功,这里附上另一个方法,没有试验过,看起来应该可行:其他方法。

1、运用Cmake选择source code文件夹路径与build路径:

主要是build_sheared_libs这一项不要勾选,则生成的文件是静态编译的,后面的选项可以选上opengl,png,tiff等图像库,生成的opencv对应的VC工程。

2、打开opencv工程,在3rdparty与applications文件夹下的工程选中后配置属性,配置C/C++中代码生成项中,“运行时库”项,在debug模式下配置为"多线程调试/MTD",release模式下为"多线程MT",配置好后编译生成即可,最后在VC中添加opencv的包含目录与库文件目录。

3、在自己的VC工程里,按照同样的方法配置“运行时库”,加入相应库即可,编译时可能会出现链接错误,则需要加入库:vfw32.lib与comctl32.lib,若勾选了opengl还需添加opengl32.lib,可以直接加在链接器选项的附加依赖项里或者加入语句:#pragma comment( lib, "vfw32.lib" )   #pragma comment( lib, "comctl32.lib" ) #pragma comment(lib,"opengl32.lib")。

       按照以上方法,可将工程中用到的opencv函数编译进exe文件,则不需要dll文件,不过好像在debug模式下编译会无法链接通过,原因是重定义了win32相关函数。

0 0
原创粉丝点击