• 8315阅读
  • 1回复

QT4.7.4无法使用opencv2.2.0的C++函数 [复制链接]

上一主题 下一主题
离线胜券在握
 

只看楼主 倒序阅读 楼主  发表于: 2012-02-03
大家好,我刚学习opencv,正在看《OpenCV.2.Computer.Vision.Application.Programming.Cookbook》,里面的例子都是使用opencv的C++函数和类,在VS2010下面运行起来一切正常。但是在QT下面却一直出现错误。错误如下:
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::imread(std::string const&, int)'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::fastFree(void*)'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::fastFree(void*)'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::Mat::deallocate()'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::Mat::deallocate()'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::Mat::deallocate()'
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::fastFree(void*)'
:-1: 错误:collect2: ld returned 1 exit status

我的代码如下:
  1. QT       += core
  2. QT       -= gui
  3. TARGET = hello-opencv-cpp1
  4. CONFIG   += console
  5. CONFIG   -= app_bundle
  6. TEMPLATE = app
  7. INCLUDEPATH += C:\OpenCV2.2\include
  8. CONFIG(release,debug|release){
  9.     LIBS += C:\OpenCV2.2\lib\opencv_calib3d220.lib \
  10.             C:\OpenCV2.2\lib\opencv_contrib220.lib \
  11.             C:\OpenCV2.2\lib\opencv_core220.lib \
  12.             C:\OpenCV2.2\lib\opencv_features2d220.lib \
  13.             C:\OpenCV2.2\lib\opencv_ffmpeg220.lib \
  14.             C:\OpenCV2.2\lib\opencv_flann220.lib \
  15.             C:\OpenCV2.2\lib\opencv_gpu220.lib \
  16.             C:\OpenCV2.2\lib\opencv_highgui220.lib \
  17.             C:\OpenCV2.2\lib\opencv_imgproc220.lib \
  18.             C:\OpenCV2.2\lib\opencv_legacy220.lib \
  19.             C:\OpenCV2.2\lib\opencv_ml220.lib \
  20.             C:\OpenCV2.2\lib\opencv_objdetect220.lib \
  21.             C:\OpenCV2.2\lib\opencv_ts220.lib \
  22.             C:\OpenCV2.2\lib\opencv_video220.lib \
  23. }
  24. CONFIG(debug,debug|release){
  25.     LIBS += C:\OpenCV2.2\lib\opencv_calib3d220d.lib \
  26.             C:\OpenCV2.2\lib\opencv_contrib220d.lib \
  27.             C:\OpenCV2.2\lib\opencv_core220d.lib \
  28.             C:\OpenCV2.2\lib\opencv_features2d220d.lib \
  29.             C:\OpenCV2.2\lib\opencv_ffmpeg220d.lib \
  30.             C:\OpenCV2.2\lib\opencv_flann220d.lib \
  31.             C:\OpenCV2.2\lib\opencv_gpu220d.lib \
  32.             C:\OpenCV2.2\lib\opencv_highgui220d.lib \
  33.             C:\OpenCV2.2\lib\opencv_imgproc220d.lib \
  34.             C:\OpenCV2.2\lib\opencv_legacy220d.lib \
  35.             C:\OpenCV2.2\lib\opencv_ml220d.lib \
  36.             C:\OpenCV2.2\lib\opencv_objdetect220d.lib \
  37.             C:\OpenCV2.2\lib\opencv_ts220.lib \
  38.             C:\OpenCV2.2\lib\opencv_video220d.lib \
  39. }
  40. SOURCES += \
  41.     main.cpp

  1. #include <QtCore/QCoreApplication>
  2. #include<opencv/cv.h>
  3. #include<opencv/cxcore.h>
  4. #include<opencv/highgui.h>
  5. int main(int argc, char *argv[])
  6. {
  7.     QCoreApplication a(argc, argv);
  8.     cv::Mat img;
  9.     //IplImage img;
  10.     cv::imread("d:/dahai.jpg");
  11.     std::cout<<"hello.jpg";
  12.     return a.exec();
  13. }


网上说用mingw重新编译一次opencv就能解决,但是我试过以后(我已经把库文件换成.a的那个文件了),还是存在下面两个问题
F:\qtapp\hello-opencv-cpp1\main.cpp:-1: 错误:undefined reference to `cv::imread(std::string const&, int)'
:-1: 错误:collect2: ld returned 1 exit status

希望各位网友能够提供下解决这个问题的方向,谢谢;
离线胜券在握

只看该作者 1楼 发表于: 2012-02-10
http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=17070
参考上面网友的做法,可以很好的解决问题,不过用最新版的mingw编译的库可以使用opencv2.3.1在QT下面更好的功能;

快速回复
限100 字节
 
上一个 下一个