Windows 7
QT 5.4.0
OPENCV 2.4.10
mingw 4.9.1
我正在尝试创建一个简单的Hello World应用程序,以测试QT是否与OpenCV一起使用。除默认情况下创建的内容外,代码是
#include <opencv/cv.h>
#include <opencv/highgui.h>
(...)
cv::Mat image= cv::imread("pic.jpg");
cv::namedWindow("Test picture");
cv::imshow("Test picture", image);
cv::waitKey(1000);
(...)
但是,我在链接库时遇到困难。首先,我将路径设置为 *.dll.a文件手动
INCLUDEPATH += C:/opencv/my_build/install/include
INCLUDEPATH += C:/opencv/my_build/install/include/opencv
INCLUDEPATH += C:/opencv/my_build/install/include/opencv2
LIBS += -LC:/opencv/my_build/install/x86/mingw/lib
-llibopencv_core2410
-llibopencv_highgui2410
etc etc
,但是我会得到cannot find -llibopencv_<lib>2410
错误。我什至使用了QT创建者的"添加库"功能(项目 -> rightClick->添加库),结果是相同的。仅当我将-llibopencv_<lib>2410
更改为-opencv_<lib>2410
时,该错误才会消失。从我的理解中,这很奇怪,因为" L"论点缺少。即使该错误消失了,当我收到undefined reference to cv::EVERYTHING
错误时,许多其他错误也替换了它。我环顾四周,找到了解决方案的解决方案,但是解决一个问题会导致另一个问题,反之亦然。
我很确定OpenCV构建不是错误的 - 我已经使用Code :: blocks完成了一个非常大的控制台 - 应用程序。
我的当前 *.pro文件:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVTest
TEMPLATE = app
SOURCES += main.cpp
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
INCLUDEPATH += C:/opencv/my_build/install/include
win32: LIBS += -L$$PWD/../../../../../../OpenCV/my_build/install/x86/mingw/lib/ -llibopencv_core2410
INCLUDEPATH += $$PWD/../../../../../../OpenCV/my_build/install/x86/mingw
DEPENDPATH += $$PWD/../../../../../../OpenCV/my_build/install/x86/mingw
win32: LIBS += -L$$PWD/../../../../../../OpenCV/my_build/install/x86/mingw/lib/ -llibopencv_highgui2410
INCLUDEPATH += $$PWD/../../../../../../OpenCV/my_build/install/x86/mingw
DEPENDPATH += $$PWD/../../../../../../OpenCV/my_build/install/x86/mingw
如何将OpenCV库正确链接到QT创建者?我想念什么吗?
编辑:我已经重建了整个该死的东西,但它仍然不起作用。该死的。
指定库时,您需要排除'lib'部分:
LIBS += -LC:/opencv/my_build/install/x86/mingw/lib
-lopencv_core2410
-lopencv_highgui2410
坦率地说,我对发生什么问题一无所知。我已经编辑了两次环境路径变量,以包括OpenCV构建。也许我第一次做了错字。现在看起来像这样:
C:MinGWbin;C:OpenCVmy_buildinstallx86mingwbin;C:Qt5.4.05.4mingw491_32bin;
my *.pro文件看起来也不同。
QT += core
QT -= gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = OpenCVTest
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
INCLUDEPATH += C:/OpenCV/qtbuild//install/include
LIBS += "C:/OpenCV/qtbuild/install/x86mingw/lib/*.a"
SOURCES += main.cpp
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
我已经将+=gui
更改为-=gui
并添加了CONFIG -= app_bundle
。现在的包含路径也有所不同 - 我不会因为不合理的恐惧而改变它们会再次出错。
最后,我只是删除了上一个项目并做了一个新项目。也许还有其他事情腐败了?
无论如何,在做这些事情之后,它现在起作用。