Qt CreatoR语言 OpenCV - 未定义的引用/找不到库



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。现在的包含路径也有所不同 - 我不会因为不合理的恐惧而改变它们会再次出错。

最后,我只是删除了上一个项目并做了一个新项目。也许还有其他事情腐败了?

无论如何,在做这些事情之后,它现在起作用。

最新更新