동적 인 opencv 라이브러리를 연결하는 데 아무런 문제가 없지만 대신 정적 라이브러리를 사용하므로 OpenCV 2.3을 "공유 라이브러리 빌드"옵션을 선택하지 않은 상태로 다시 작성합니다. 나는 내 .PRO 파일에 다음을 넣어Windows의 Qt Creator에서 정적 OpenCV 라이브러리를 연결하는 데 도움이 필요합니다.
LIBS += "C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_calib3d231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_contrib231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_core231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_features2d231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_flann231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_gpu231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_imgproc231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_legacy231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_ml231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_objdetect231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_ts231.a" \
"C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_video231.a"
INCLUDEPATH += "C:\Program Files\openCV_static\opencv\build\install\include"
INCLUDEPATH += "C:\Program Files\openCV_static\opencv\build\install\include\opencv"
이것은 내가 실제로 .DLL .A에서 끝난 운영자와 파일을 제외하고, 동적 라이브러리를 사용하기 전의 경우 한 것과 매우 유사하며, 나는를 넣어 dt의 (dll.a 파일이 아님) qt 프로그램의 출력 디렉토리에 있습니다 (그래서 프로그램이 찾아서 실행할 수 있습니다). 이제 요점은 그 DLL이 필요 없다는 것입니다, 그래서 그들은 더 이상 내 프로그램의 출력 디렉토리에 있지 않습니다. (실제로 그들은 OpenCV로 빌드하지 않았습니다.) 내가는 MinGW을 사용하고
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x13): undefined reference to `[email protected]'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x25): undefined reference to `[email protected]'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN17CvVideoWriter_VFW5closeEv+0x37): undefined reference to `[email protected]'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureCAM_VFW4openEi+0x6c): undefined reference to `[email protected]'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureCAM_VFW4openEi+0xb7): undefined reference to `[email protected]'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(cap_vfw.obj):cap_vfw.cpp:(.text$_ZN16CvCaptureAVI_VFW9grabFrameEv+0x29): undefined reference to `[email protected]'
.
.
.
.
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(grfmt_jpeg2000.obj):grfmt_jpeg2000.cpp:(.text$_ZN2cv13Jpeg2KEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x17b): undefined reference to `jas_stream_close'
C:\Program Files\openCV_static\opencv\build\install\lib\libopencv_highgui231.a(grfmt_jpeg2000.obj):grfmt_jpeg2000.cpp:(.text.startup._GLOBAL__sub_I_C__Program_Files_openCV_static_opencv_modules_highgui_src_grfmt_jpeg2000.cpp+0x4): undefined reference to `jas_init'
collect2: ld returned 1 exit status
mingw32-make.exe[1]: *** [release\trusion.exe] Error 1
mingw32-make.exe: *** [release] Error 2
23:21:10: The process "C:\MinGW\bin\mingw32-make.exe" exited with code 2.
Error while building project trusion (target: Desktop)
When executing build step 'Make'
: 내 프로그램을 빌드 할 때 그러나 나는 이러한 오류를 얻을. opencv를 빌드하는 데 사용 된 툴체인과 동일한 프로젝트를 컴파일합니다. 위에서 언급 한 것처럼 동적 인 libs로 작업했습니다. 정적 라이브러리에서는 작동하지 않습니다.
그냥 질문에 연결하려고 사용했던 방법 당신은 Qt를 지원하는 opencv를 만들 수 있습니까? 내 빌드는 Qt 소스 4.6.3 다운로드와 함께 제공되지 않은'qconfig.h'라는 파일을 기대하기 때문에 성공하지 못합니다. 어떤 버전을 사용하셨습니까? – vsz
@vsz 지연에 대해 유감스럽게 생각합니다. Qt를 지원하는 opencv를 빌드하려고 시도하지 않았습니다. 난 단순히 내가 쓰고있는 Qt 프로그램에 opencv 라이브러리를 가져온다. – jzepeda