簡體   English   中英

Qt Creator-OpenCV-未定義參考/找不到庫

[英]Qt Creator - OpenCV - undefined reference/can't find libraries

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 Creator的“添加庫”功能(項目->右鍵單擊->添加庫),結果是相同的。 該錯誤只如果我改變消失-llibopencv_<lib>2410-opencv_<lib>2410 根據我的理解,這很奇怪,因為缺少“ l”參數。 即使該錯誤消失了,當我得到undefined reference to cv::EVERYTHING錯誤的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 Creator? 我想念什么嗎?

編輯:我已經重建了整個該死的東西,它仍然無法正常工作。 他媽的。

指定庫時,您需要排除“ lib”部分:

LIBS += -LC:/opencv/my_build/install/x86/mingw/lib \
    -lopencv_core2410 \
    -lopencv_highgui2410

坦白說,我對出什么問題一無所知。 我已經兩次編輯環境PATH變量,以包括OpenCV構建。 也許我是第一次打錯字。 現在看起來像這樣:

C:\MinGW\bin;C:\OpenCV\my_build\install\x86\mingw\bin;C:\Qt\5.4.0\5.4\mingw491_32\bin;

我的* .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/x86\mingw/lib/*.a"

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

我將+=gui更改為-=gui並添加了CONFIG -= app_bundle 現在,INCLUDE和LIBS路徑也有所不同-我不會出於非理性的恐懼而改變它們,因為某些錯誤會再次變得可怕。

最后,我只是刪除了先前的項目,然后創建了一個新項目。 也許其他東西被破壞了?

無論如何,在完成這些操作后,它現在可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM