Qt Creator中无法使用OpenCV2中新函数的解决办法 .
来源:互联网 发布:有人收购淘宝店铺干嘛 编辑:程序博客网 时间:2024/05/21 19:27
原文地址:http://blog.csdn.net/masikkk/article/details/8748865
按上篇文章《Qt4.8下应用OpenCV2.4.4搭建环境详细步骤(win7系统)》
http://blog.csdn.net/masikkk/article/details/8693793
在Qt Creator中配置了OpenCV2.4.X,但是只能使用opencv1.0的函数,opencv2中的函数,例如:imread(),Mat结构等都不能使用。
找原因:
(1)看头文件有没有问题
将include和lib目录的配置由qmake.conf文件中改到工程中的pro文件中,以便于修改。
这里说明一下,如果在qmake.conf文件中配置include和lib文件目录,则#include后面的opencv头文件会加下划线,说明IDE找不到这些头文件,而且写函数的时候没有自动补全。但是编译时没有错,因为构建的时候可以找到这些目录。如果在pro文件中配置include和lib文件目录,IDE就知道了这些目录,所以写函数的时候还有自动补全,更利于检查错误。
包含进opencv2的头文件
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
试了opencv2中的imread()函数,有自动补全提示,说明编译器已经找到了这些头文件。
但构建的时候会出现:
undefined reference to `cv::imread(std::string const&, int)' 等
说明编译器找不到lib库文件
(3)找lib库文件的问题
lib文件的包含如下:
LIBS += C:\opencv\build\x86\vc10\lib\opencv_core243d.lib\
C:\opencv\build\x86\vc10\lib\opencv_highgui243d.lib\
C:\opencv\build\x86\vc10\lib\opencv_imgproc243d.lib\
按说没有问题,网上也都是这样配的,但是我这里就一直有问题。
情况是这样的:
①不加这些lib文件,当然opencv1和opencv2的函数都不能用,都说undefined reference
②加上这些lib文件,opencv1中的函数能用,opencv2中新添加函数和结构不能用,例如:Mat结构,imread函数,VideoCapture结构等
这说明,opencv2新添加的函数和结构不在这些lib文件中。
后来,又新添加了几个lib文件:
C:\opencv\build\x86\mingw\lib\libopencv_core243.dll.a\
C:\opencv\build\x86\mingw\lib\libopencv_highgui243.dll.a\
C:\opencv\build\x86\mingw\lib\libopencv_imgproc243.dll.a
这次编译没问题了,说明这些lib文件里有opencv2新添加的东西。
(4)dll的问题
这时虽然编译没问题了,但运行的时候还是有问题(此时已经将对应的dll文件拷贝到system32文件夹下了),说程序异常终止,知道可能是缺dll文件。
进debug目录直接运行exe文件,按照提示缺少哪些文件去网上找,前两个都找到了,第三个是” libstdc++-6.dll”,找了好几个都说dll文件有错误。把MinGW目录下的这个dll文件复制过去也说是同样的错误。于是搜索错误信息,于是找到opencv中文网的下面一片文章,和我的错误一模一样:
http://www.opencv.org.cn/forum/viewtopic.php?t=23817
============================================================================================
新手求助,_ZNSt9exceptionD2Ev错误
我是OpenCV的新手···我用OpenCV2.4最新版本结合CodeBlock配置的环境。并使用Opencv带的样例测试。编译通过了,但是一运行就会报错:无法定位程序输入点_ZNSt9exceptionD2Ev于动态链接库libstdc++-6.dll上我不明白这是什么错误,请高手帮助····谢谢了
Re:新手求助,_ZNSt9exceptionD2Ev错误
我不清楚你用什么编译器来编译你自己写的opencv程序,以我的经验,你需要用一个4.6.x版本的mingw来链接官方的opencv2.4的库。因为官方opencv2.4的库是用mingw4.6.x版本编译的。
好谢谢现在我试试等下给你回复呵呵
我换了最新的版本MinGW,结果显示还是无法定位程序输入点 _ZdlPv 于动态链接库libstdc++-6.dll
我前面都和你说了,不能用最新版的MinGW,只能用4.6.x版本的MinGW。
http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.6.3/32-bit/threads-win32/dwarf/x32-4.6.3-release-win32-dwarf-rev0.7z/download 用这个版本肯定可以。
=================================================================================================================
看了大神的恢复,知道了是MinGW的版本问题,又下载了一个MinGW,把libstdc++-6.dll文件拷过去,果然OK了。现在可以用OpenCV2中的函数了。
总结一下:
(1)下载的OpenCV2.4.X版本,已经编译好的lib文件中,只有C:\opencv\build\x86\mingw\lib
这个目录下的lib文件有opencv2的新函数,而C:\opencv\build\x86\vc10\lib这个目录下的lib文件中没有opencv2的新函数,所以一开始包含这个目录下的lib文件会找不到新函数的实现。
(2)另一种使用opencv2的方法就是用cmake自己编译生成dll和lib文件,这样里面就有了新的函数。不过比较麻烦。
- Qt Creator中无法使用OpenCV2中新函数的解决办法
- Qt Creator中无法使用OpenCV2中新函数的解决办法 .
- CentOS6.7中Qt Creator无法调试的解决办法
- QT Creator中无法调试的解决方法
- Qt Creator中加入新的ui文件时报错
- 用qt creator,常量中有换行符的解决办法
- QT Creator和MinGW中配置OpenCV2.3.1
- QT Creator和MinGW中配置OpenCV2.3.1
- QT Creator 中无法切换输入法
- Qt Creator中To-Do功能的使用
- 使用android中drawline函数无法绘制水平线的解决办法
- 在Qt Creator中使用Opencv 2.3
- 在Qt Creator中使用OpenCV库
- 在Qt Creator中使用OpenCV库
- Qt Creator项目中使用qss
- qt creator中使用qwt插件
- Qt creator正常使用过程中崩溃
- Qt Creator 中使用 Git / Github
- ubuntu 使用记录一
- 优化解耦的设计思考
- 如果我早明白这些,不至于这样的碌碌无为!--献给未开始工作的所有学弟学妹
- 今天为找工作开始准备了
- 终端启动报错,应用程序无法启动!
- Qt Creator中无法使用OpenCV2中新函数的解决办法 .
- CSDN博客,截图上传不了
- c++队列 queue
- unity3d 性能优化之prafab
- Visual Studio 2010——第一个Visual C++.NET程序
- 多屏互动新媒体产品技术的调研报告
- 设计模式之七 --- 观察者模式(Observer)
- chapter 8.7: 完成I/O请求
- 本机能访问,但是局域网其他机器不能访问网站网页