2013-11-15 3 views
1

Я новичок в Qt и OpenCV, и я пытаюсь сделать простой проект с кодом:неопределенная ссылка кварты OpenCV

в .pro:

QT  += core 

QT  -= gui 

QT += widgets 

TARGET = latihan_2 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 


SOURCES += main.cpp 

INCLUDEPATH += E:\\OpenCV\\OpenCV\\opencv\\build\\include 

LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_core246.lib 
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_highgui246.lib 
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_imgproc246.lib 
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_features2d246.lib 
LIBS += E:\OpenCV\OpenCV\opencv\build\x86\vc10\lib\opencv_calib3d246.lib 

в main.cpp:

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 

int main(){ 
    //read image 
    cv::Mat image; 
    image = cv::imread("img.jpg"); 
    //create image window named "My image" 
    cv::namedWindow("My Image"); 
    //show the image on window 
    cv::imshow("My image", image); 
    //wait key for 5000ms 
    cv::waitKey(5000); 
    return 1; 

} 

Однако он всегда дает ошибку в отношении неопределенной ссылки на cv :: imread, cv :: namedWindows и другие функции CV, которые я использовал.

я использую Qt Creator 2.8.1, основанный на Qt 5.1.1 и OpenCV-2.4.6.0

Любая помощь будет принята с благодарностью! спасибо

+0

Какой у вас компилятор? «\ x86 \ vc10», вероятно, означает, что opencv скомпилирован с Visual C++. Используете ли вы VC++ для компиляции проекта или используете mingw32? –

+0

Я просто изменяю его на: LIBS + = E: \ OpenCV \ OpenCV \ opencv \ build \ x86 \ mingw \ lib \ libopencv_core246.dll.a LIBS + = E: \ OpenCV \ OpenCV \ opencv \ build \ x86 \ mingw \ lib \ libopencv_highgui246.dll.a LIBS + = E: \ OpenCV \ OpenCV \ opencv \ build \ x86 \ mingw \ lib \ libopencv_imgproc246. dll.a LIBS + = E: \ OpenCV \ OpenCV \ opencv \ build \ x86 \ mingw \ lib \ libopencv_features2d246.dll.a LIBS + = E: \ OpenCV \ OpenCV \ opencv \ build \ x86 \ mingw \ lib \ libopencv_calib3d246.dll.a и он работает! Спасибо, старый! – Squirrelcages

+0

Добро пожаловать. BTW, для вашего простого приложения нужны только core и highgui libs. –

ответ

-1

Вы, вероятно, не должны использовать :: cv, просто используйте функцию и попробуйте.

Извините за ошибочное предложение, реальная причина не в состоянии найти свой LIBS:

должен использовать это: LIBS + = E:\\OpenCV\\OpenCV\\opencv\\build\\x86\\vc10\\lib\\opencv_core246.lib

+0

Я пробовал это. и ошибка изменилась на «Мать», которая не была объявлена ​​в этой области, «образ» не был объявлен в этой области и т. д. – Squirrelcages

2

неопределенных ссылки ошибок являются проблемой ссылки, а это означает, что ваш проект скомпилирован успешно, но компоновщик не может найти двоичный код для этих функций.

У меня есть очень simple OpenCV/Qt project, что настроен для компиляции на Windows/Linux/Mac OS X. Если вы take a look at the .pro file, вы заметите, что для Windows, я делаю:

win32 { 
    message("* Using settings for Windows.") 

    INCLUDEPATH += "C:\\opencv\\build\\include" \ 
        "C:\\opencv\\build\\include\\opencv" \ 
        "C:\\opencv\\build\\include\\opencv2" 

    LIBS += -L"C:\\opencv\\build\\x86\\vc10\\lib" \ 
     -lopencv_core242 \ 
     -lopencv_highgui242 \ 
     -lopencv_imgproc242 
} 

Убедитесь, чтобы заменить номер, на который ссылается LIBS с конкретной версией OpenCV.

Также важно отметить, что OpenCV скомпилирован с определенными флагами, и в зависимости от бинарной версии вы установили, иногда также необходимо добавить следующие инструкции к .pro файла вашего проекта:

QMAKE_CXXFLAGS_DEBUG += -Zi -MTd 
QMAKE_CXXFLAGS_RELEASE += -MT 

MTd относится к многопоточных-Debug-DLL и MT стендов для Multithreaded статического связывания.

0

Google привел меня сюда, когда у меня была такая же проблема. Решения здесь мне не помогли. Но, наконец, я нашел проблему в моем случае: я не установил значение для CMAKE_BUILD_TYPE в cmake gui. У вас есть выбор между release и debug, и я думаю, вы должны выбрать его.

Я скомпилировал OpenCV 3.0.0 с помощью последнего совета.

Смежные вопросы