设为首页 加入收藏

TOP

在没有安装OpenCV的电脑上运行基于OpenCV库的程序
2014-11-24 07:37:37 来源: 作者: 【 】 浏览:2
Tags:没有 安装 OpenCV 电脑 运行 基于 程序

在没有安装OpenCV的电脑上,要运行基于OpenCV库的程序,有两种方法:一、动态链接:就是将OpenCv安装目录下的bin目录下的*.dll文件与应用程序一起打包发布;二、静态链接:就是将OpenCV库源代码先用cMake进行编译,然后将opencv库的源文件加到工程中一期编译,也就是说最后生成的可执行文件可以单独运行,不需要OpenCV的动态链接库。


一、首先介绍第一种方法,动态链接,dll调用其中包括隐式调用和显示调用


1 隐式调用一般需要:


声明函数接口的.h文件——include文件夹里的内容


链接动态库的.lib文件——lib文件夹里的内容以及Input->Additional Dependencies添加的XX.lib


动态链接库.dll文件——bin文件夹的内容


这里bin文件夹是在系统环境目录里的,所以执行代码是exe文件可以找到。也可以添加在系统文件中,把需要用到的dll拷贝到exe同一个文件夹下即可。


所以,如果把未发布的工程拷贝到没有opencv的电脑上,只要把需要用的函数相关的.h,.lib以及.dll文件考过去即可。


2 另一种调用dll的方式是显示调用。


显示调用是不需要.lib和.h文件的。是在代码里“显示”加载要用到的函数。例如:


HINSTANCE hDLL=NULL;//生命DLL句柄


hDLL=LoadLibrary("opencv_core242d.dll"); //加载DLL


HMAT myImread=(HMAT)GetProcAddress(hDLL,"imread"); //使用DLL中的函数


这样在拷贝工程时只拷贝用到的DLL文件就可以。


但这样代码写得很麻烦,DLL换个名字版本之类的要改很多地方,一般用得不多。


如果只是给别人静态链接的exe程序(比如一个demo,不用跑程序),那只要给别人dll文件就可以。


也就是将需要用到的dll文件拷到exe文件夹下即可,Release拷贝XX.dll,Debug版本拷贝XXd.dll


(所以我们写Additional Dependencies不用到的尽量不写,这样拷的dll会少一些~)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇让基于OpenCV的程序在别的机子上.. 下一篇GNU/Linux内核的地址随机化

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)