Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alexey11111 от Июнь 11, 2012, 10:08



Название: проблема с линковкой библиотеки
Отправлено: alexey11111 от Июнь 11, 2012, 10:08
Возникла такая проблема.
Пытаюсь подключить к проекту библиотеку OpenCV 2.3 - проделываю стандартный набор действий

1. в .pro файл добавляю пути к файлам библиотеки и хидерам:
Код:
INCLUDEPATH += C:\\LIBRS\\OpenCV2.3\\build\\include

LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_calib3d230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_contrib230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_core230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_features2d230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_flann230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_gpu230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_highgui230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_imgproc230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_legacy230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_ml230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_objdetect230.dll.a
LIBS += C:\\LIBRS\\OpenCV2.3\\build\\x86\\mingw\\lib\\libopencv_video230.dll.a

2. В переменную Path прописываю путь к dll-кам:
Код:
C:/LIBRS/OpenCV2.3/build/x86/mingw/bin

3. А вот собственно тестовый main файл:
Код:
#include "opencv2/opencv.hpp"

int main()
{
    cv::Mat image = cv::imread("C:/pictures/img1.jpg");
    cv::imshow("Window", image);
    cv::waitKey(0);
   

    return 0;
}

В итоге выводится вот такая штука:
Код:
11:02:48: Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe» 
C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/QtSDK/PROJECTS/testnew/TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\QtGui" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include" -I"..\..\..\..\LIBRS\OpenCV2.3\build\include" -I"..\..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"..\TNT" -I"." -I"..\..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\main.o ..\TNT\main.cpp
g++ -mthreads -Wl,-subsystem,windows -o debug\TNT.exe debug/main.o  -L"c:\QtSDK\Desktop\Qt\4.8.1\mingw\lib" -lmingw32 -lqtmaind C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_calib3d230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_contrib230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_core230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_features2d230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_flann230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_gpu230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_highgui230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_imgproc230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_legacy230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_ml230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_objdetect230.dll.a C:\LIBRS\OpenCV2.3\build\x86\mingw\lib\libopencv_video230.dll.a -lQtGuid4 -lQtCored4
mingw32-make.exe[1]: Leaving directory `C:/QtSDK/PROJECTS/testnew/TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________'
debug/main.o: In function `main':
C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:6: undefined reference to `cv::imread(std::string const&, int)'
C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:7: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:7: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../TNT/main.cpp:8: undefined reference to `cv::waitKey(int)'
debug/main.o: In function `~Mat':
C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../../../../LIBRS/OpenCV2.3/build/include/opencv2/core/mat.hpp:297: undefined reference to `cv::fastFree(void*)'
debug/main.o:C:\QtSDK\PROJECTS\testnew\TNT-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK_________/../../../../LIBRS/OpenCV2.3/build/include/opencv2/core/mat.hpp:381: undefined reference to `cv::Mat::deallocate()'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [debug\TNT.exe] Error 1
mingw32-make.exe: *** [debug] Error 2
11:02:50: Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта TNT (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»

Получается, что компилятор не может прочитать dll-ки... И что самое интересное, до этого у меня все нормально работало. Вот вчера решил продолжить работу над проектом, попробовал пересобрать, ничего в нем не меняя, и вот такие ошибки появились. Чего я только не пробовал: и винду переустанавливал, и OpenCV вручную пересобирал, пробовал разные версии OpenCV (от 2.2 до 2.4.1) и dll-ки к исходникам кидал - все то же самое...
Подскажите, что случилось-то???