2013-11-04 2 views
1

VLC 응용 프로그램 용 모듈 구현에 OpenCV 라이브러리를 사용하고 있습니다.OpenCV 라이브러리를 연결하는 순서는 무엇입니까?

나는 함수 cvSaveImage을 사용하려면,하지만 난 많은 오류를 얻을 :

/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&):grfmt_jpeg.cpp(.text._ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x22c): error: undefined reference to 'jpeg_stdio_dest' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&):grfmt_jpeg.cpp(.text._ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x26e): error: undefined reference to 'jpeg_write_scanlines' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegEncoder::write(cv::Mat const&, std::vector<int, std::allocator<int> > const&):grfmt_jpeg.cpp(.text._ZN2cv11JpegEncoder5writeERKNS_3MatERKSt6vectorIiSaIiEE+0x2bc): error: undefined reference to 'jpeg_write_scanlines' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::my_jpeg_load_dht(jpeg_decompress_struct*, unsigned char*, JHUFF_TBL**, JHUFF_TBL**) [clone .constprop.36]:grfmt_jpeg.cpp(.text.unlikely._ZN2cvL16my_jpeg_load_dhtEP22jpeg_decompress_structPhPP9JHUFF_TBLS5_.constprop.36+0x94): error: undefined reference to 'jpeg_alloc_huff_table' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::close():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder5closeEv+0xa): error: undefined reference to 'jpeg_destroy_decompress' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readData(cv::Mat&):grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder8readDataERNS_3MatE+0x82): error: undefined reference to 'jpeg_start_decompress' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readData(cv::Mat&):grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder8readDataERNS_3MatE+0xf2): error: undefined reference to 'jpeg_read_scanlines' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readData(cv::Mat&):grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder8readDataERNS_3MatE+0x136): error: undefined reference to 'jpeg_finish_decompress' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readHeader():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder10readHeaderEv+0x1e): error: undefined reference to 'jpeg_std_error' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readHeader():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder10readHeaderEv+0x52): error: undefined reference to 'jpeg_CreateDecompress' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readHeader():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder10readHeaderEv+0x92): error: undefined reference to 'jpeg_stdio_src' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readHeader():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder10readHeaderEv+0xa2): error: undefined reference to 'jpeg_read_header' 
/home/virginia/workspace/android-ndk-r9/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a//libopencv_highgui.a(grfmt_jpeg.cpp.o): in function cv::JpegDecoder::readHeader():grfmt_jpeg.cpp(.text._ZN2cv11JpegDecoder10readHeaderEv+0x14c): error: undefined reference to 'jpeg_resync_to_restart' 

나는 Android.mk 파일의 변수 이름 LOCAL_LDLIBS에서 OpenCV의 라이브러리를 연결해야합니다.

LOCAL_LDLIBS := -L$(VLC_CONTRIB)/lib \ 
    -L/home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/ \ 
    -L/home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/libs/armeabi-v7a/ \ 
-ltbb -lopencv_core -lopencv_contrib -lopencv_legacy -lopencv_videostab -lopencv_photo -lopencv_stitching -lopencv_objdetect -lopencv_video -lopencv_ml -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_flann -lopencv_imgproc -lopencv_core -ltbb 

나는 /home/virginia/workspace/OpenCV-2.4.5-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/에있는 라이브러리를 연결해야한다고 생각 : libIlmImf.a liblibjasper.a liblibjpeg.a liblibpng.a liblibtiff.a

그러나 나는 그들을 연결하는 순서를 모릅니다.

제발, 어떤 도움이 필요해! 정말 고마워!

+1

''pkg-config --libs opencv'을 시도 했습니까? – ChronoTrigger

+0

이 프로젝트에서 저는 OpenCV for Android (OpenCV-2.4.5-android-sdk)를 사용하고 있으며이 라이브러리를 가리 키도록 구성된 환경 변수가 없습니다. 다른 OpenCV 라이브러리가 포함되어 있는데 문제가 없습니다 – user2948033

+0

pkg-config --libs PATHTO/opencv.pc –

답변

0

나는 대답을 제공하는 링크 here 제시 믿습니다; 자세한 내용은 네이티브 C/C++ 섹션 # 4을 확인하십시오.

희망이 있습니다.

+0

* OPENCV_LIB_TYPE : = STATIC * 행을 제거하면 동적 라이브러리가 기본적으로 연결됩니다. 최소한 문서에서 말하는 것입니다. – scap3y

0

CMake를 사용하는 사람들에게는 아마도 어리석은 것처럼 보일지 모르겠지만 make를 사용하는 사람들에게는 make가 사용하지 않기 때문에 유용합니다.

opencv.pc 파일의 경로를 찾고 pkg-config를 호출하면 필요한 모든 것을 g ++/clang ++에 대한 호출로 출력 할 수 있습니다. 위에서 언급했듯이 pkg-config 바이너리를 호출하고 opencv.pc 파일을 전달하면 라이브러리 순서가 지정됩니다. 물론 opencv.pc 파일을 직접 사용하는 것이 좋습니다. 내 메이크 파일의 예를 들어

,이 날 여기를 얻기 위해 ChronoTrigger에 사람, 감사를하는 데 도움이

OPENCVINCPKG=$(OPENCVLIBPATH)/pkgconfig/opencv.pc 
g++ `pkg-config --cflags --libs $(OPENCVINCPKG)` myClient.cpp -o myClient 

희망.

+0

조엘, 제발 날 도와 줄 수있어? 나는 cmake에 친숙하지 않고 각 라이브러리를 개별적으로 (target_link_libraries) 링크하고 있지만 올바른 순서로 수행하지는 않습니다. 당신이 "바보"라고 말한 것처럼 더 좋은 방법이 있나요? 감사 –

관련 문제