2014-11-06 2 views
0

Я пытался скомпилировать проект за последние два дня в Qt с использованием OpenCV, но не могу понять, почему это не так. Мое приложение имеет только main.cpp, widget.cpp и widget.hQt Creator LNK2019: Неразрешенный внешний символ с использованием OpenCV

вот мой файл .pro

QT  += core gui opengl 
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

    TARGET = FaceDetect 
    TEMPLATE = app 
    SOURCES += main.cpp\ 
      widget.cpp 

    HEADERS += widget.h 

    FORMS += widget.ui 

    INCLUDEPATH += C:/opencv/build/include/ 
    LIBS += -LC:/opencv/build/x64/vc10/lib/ 
      -libopencv_core2410 
      -libopencv_highgui2410 
      -libopencv_imgproc2410 
      -libopencv_features2d2410 
      -libopencv_calib3d24610 

и эти ошибки я получаю:

main.obj:-1: error: LNK2019: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" ([email protected]@[email protected]@QAEXXZ) referenced in function "public: void __thiscall cv::Mat::release(void)" ([email protected]@[email protected]@QAEXXZ)  

moc_widget.obj:-1: error: LNK2001: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" ([email protected]@[email protected]@QAEXXZ) 

moc_widget.obj:-1: error: LNK2001: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" ([email protected]@[email protected]@QAEXXZ) 

Может кто-нибудь объяснить, почему и как я избавиться от них, пожалуйста?

Спасибо!

+0

Что такое код, который дает вам ошибки? – deW1

+0

Удостоверьтесь, что это не одна из проблем: проверьте, если вы создаете сборку отладки, потому что OpenCV для Visual Studio имеет имена библиотек отладки, заканчивающиеся на «d», вы можете увидеть мой ответ о том, как установить связь с debug и release http : //stackoverflow.com/questions/20588440/include-path-for-adding-an-external-library-in-qt-creator/20589013#20589013 Также вы, похоже, используете сборку с открытым кодом x64, которая не будет работать с Qt, построенным для 32 бит (и официальная страница загрузки Qt, построенная с VS2010, представляет собой 32-разрядную версию) – Zlatomir

+1

Убедитесь, что '-libopencv_core2410' и т. д. является правильной ссылкой на имя библиотеки. Как называется библиотека? – vahancho

ответ

0

Поместите косую черту в конец каждого файла в LIBS и сохраните его.

LIBS += -LC:/opencv/build/x64/vc10/lib/ 
     -libopencv_core2410 \ 
     -libopencv_highgui2410 \ 
     -libopencv_imgproc2410 \ 
     -libopencv_features2d2410 \ 
     -libopencv_calib3d24610 

Теперь щелкните правой кнопкой мыши папку проекта и выберите «Run QMAKE», а затем «сборки», что это будет «делать» файл и рассматривать изменения, внесенные в файл .pro.

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