【发布时间】:2015-10-23 21:30:09
【问题描述】:
当我尝试在 Ubuntu 上链接 OpenCV 库时,发生了一些我无法理解的问题。
我在 Ubuntu 14.04 上使用了 OpenCV 2.4.11 和 Qt creator。
在我的项目文件中,我写了
INCLUDEPATH += /usr/local/include/opencv
INCLUDEPATH += /usr/local/include/opencv2
LIBS += -L/usr/local/lib\
-lopencv_calib3d\
-lopencv_contrib\
-lopencv_core\
-lopencv_features2d \
-lopencv_flann\
-lopencv_gpu\
-lopencv_highgui\
-lopencv_imgproc\
-lopencv_legacy\
-lopencv_ml\
-lopencv_nonfree\
-lopencv_objdetect\
-lopencv_ocl\
-lopencv_photo\
-lopencv_stitching\
-lopencv_superres\
-lopencv_ts\
-lopencv_video\
-lopencv_videostab
但是在构建项目的时候出现了很多错误,比如undefined reference to 'cvCreateMat'。显然,OpenCV 没有正确链接到我的项目。
于是,我在网上搜索并尝试了一个可能的解决方案,那就是
CONFIG += link_pkgconfig
PKGCONFIG += opencv
令我惊讶的是,它可以正常工作并且不再出现链接错误。
但是,我仍然不明白为什么它不能以第一种方式工作,因为我已经在 Mac OS X 上成功地设置了我的项目。为什么它现在不能在我的 Ubuntu 上工作?
我试过pkg-config --libs opencv,结果是
-L/usr/local/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lXext -lX11 -lICE -lSM -lGL -lGLU -lrt -lpthread -lm -ldl
【问题讨论】: