怎么在Qt Creator中添加OpenCV库

怎么在Qt Creator中添加OpenCV库,第1张

在你的pro文件里
OPENCV_PATH = C:/opencv/build # 你的opencv folder
INCLUDEPATH += $${OPENCV_PATH}/include \
$${OPENCV_PATH}/include/opencv \
$${OPENCV_PATH}/include/opencv2
CONFIG(release, debug|release) {
LIBS += $${OPENCV_PATH}/x64/vc11/lib/opencv_highgui249lib \
$${OPENCV_PATH}/x64/vc11/lib/opencv_imgproc249lib \
$${OPENCV_PATH}/x64/vc11/lib/opencv_core249lib
# 你想用的库 release 版本 /x64, /vc11 对应你的编译器版本
}
CONFIG(debug, debug|release) {
LIBS += $${OPENCV_PATH}/x64/vc11/lib/opencv_highgui249dlib \
$${OPENCV_PATH}/x64/vc11/lib/opencv_imgproc249dlib \
$${OPENCV_PATH}/x64/vc11/lib/opencv_core249dlib
# 你想用的库 debug 版本, /x64, /vc11 同上
}

一、建立并生成动态链接库
1
我们首先在磁盘的某个位置建立一个名为DllDemo的文件夹。
打开QtCreator,新建工程,我们选择Library,C++库,然后就是choose。
怎样在Qt中建立使用动态链接库
2
然后在d出的C++库对话框我们默认类型共享库,名称为MyDll。路径就是我们刚才建立的DllDemo文件夹。然后,一直下一步,直到点击完成。
怎样在Qt中建立使用动态链接库
3
我们来看看程序结构,以及pro文件内容。
可以看到系统自动生成了一个mydll_globalh的文件。
pro内也自动生成了一些内容。可以看到TEMPLATE = lib,而不是我平时的TEMPLATE = app。
怎样在Qt中建立使用动态链接库
4
再来看看mydll_globalh的内容。
可以看到系统自动定义了两个宏。用于声明哪些函数是需要我们导出的。
怎样在Qt中建立使用动态链接库
5
下面我们来给我们的代码添加点内容,以便于我们待会使用。
首先我们在mydllh中添加几行代码,如下图。
注意:extern "C" MYDLLSHARED_EXPORT必须要有。
怎样在Qt中建立使用动态链接库
6
再来看看mydllcpp中的实现代码,都比较简单。
怎样在Qt中建立使用动态链接库
7
代码编写完毕后,我们直接构建就行了。然后就可以看到我们生成的dll了。
怎样在Qt中建立使用动态链接库
END
二、测试生成的DLL
新建一个基于Qt的控制台应用程序,名称为DllTest。依然放置在我们的DllDemo的目录下。
怎样在Qt中建立使用动态链接库
建好了以后,就可以在maincpp写代码了。我们通过QLibrary类来加载dll。
因为要获得类对象的实例,所以我们需要将mydllh包含进来。
要注意的是,我没有对函数是否成功获取做检测。
来看看我们的代码:
怎样在Qt中建立使用动态链接库
代码写完后就可以构建程序了。不过要运行程序,我们还需要将刚才生成的dll拷贝到程序的同级目录。
怎样在Qt中建立使用动态链接库
在IDE中运行程序,因为我生成的是debug版的程序,相关的环境变量未设置,无法独立运行。
可以看到我们的dll工作的很好,程序运行正常。
怎样在Qt中建立使用动态链接库
END
三、善用Assistant
1
最后我们来看看Assistant中关于QLibrary的描述。比较费解的是,Assistant中并没有对创建共享库做详细的说明,估计是这个太简单或资料太多了吧。
怎样在Qt中建立使用动态链接库

前提是在同一个局域网,或者网络IP可以互相ping通1、本地创建ORACLE监听2、防火墙开通端口3、远程安装ORACLE客户端,根据服务端的数据库名称、IP地址、端口配置TNS连接

依照上述的格式,你就可以添加编译时需要的依赖库了。
这是一种正确的方法,不过在笔者还不知道这种方法的时候,笔者时通过修改Makefile的。在debug目录下,有一个Makefile文件,你可以通过在如下的方式:在Makefile里面找到
在这里进行添加。不过这种方式的有一个问题:那就是当pro的文件变化的时候,Makefile就会被重新组织和生成,这个时候LIBS 就会被改变,你需要再次添加,不然又会编译出错。希望这个方法对大家有用!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12920664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存