2012-03-09 2 views
4

동적 인 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로 작업했습니다. 정적 라이브러리에서는 작동하지 않습니다.

+0

그냥 질문에 연결하려고 사용했던 방법 당신은 Qt를 지원하는 opencv를 만들 수 있습니까? 내 빌드는 Qt 소스 4.6.3 다운로드와 함께 제공되지 않은'qconfig.h'라는 파일을 기대하기 때문에 성공하지 못합니다. 어떤 버전을 사용하셨습니까? – vsz

+0

@vsz 지연에 대해 유감스럽게 생각합니다. Qt를 지원하는 opencv를 빌드하려고 시도하지 않았습니다. 난 단순히 내가 쓰고있는 Qt 프로그램에 opencv 라이브러리를 가져온다. – jzepeda

답변

1

재스퍼 의존성이 누락 된 것 같습니다. Windows에서 을 OpenCV는 내장 사전 'undefined reference to [email protected]' 오류

을 LIBS하는 라이브러리 (LIB/libjasper의 *)에 추가하려고 libjasper, vfw32.lib 또는 MSVFW32.DLL

+0

덕분에, 그것은 빙산의 일각 인 것 같습니다. 그 후에도 libs jpeg, tiff 및 png를 추가해야했습니다. 이제 \ libopencv_highgui231.a (cap_vfw.obj) : cap_vfw.cpp :(. text $ _ZN17CvVideoWriter_VFW5closeEv + 0x13) : 'AVIStreamRelease @ 4'에 대한 정의되지 않은 참조와 같은 오류가 발생합니다. vfw 관련 오류는 내 웹 서치가 말한 내용입니다. , 그러나 나는 그들에 대해 언급하기 전에 어땠 을까? – jzepeda

+0

나는 vfw 라이브러리를 추가해야한다고 생각한다. 편집 된 답변을 참조하십시오. – Masci

+0

많은 감사합니다! 그게 .. Vfw32.lib와 연결되어 있습니다. 먼저 Windows 7 SDK First를 다운로드해야했습니다. – jzepeda

관련 문제