OpenCV : cmake를 사용할 때`cv :: imread에 대한 정의되지 않은 참조

user3917718

두 시스템 모두 Linux에서 OpenCV를 사용해야합니다. 내 설정은 첫 번째 시스템에서 작동하지만 두 번째 시스템에서는 실패합니다. 두 시스템 모두 다음을 사용하여 사용자 지정 위치에 OpenCV를 설치했습니다.

cd myBuildDir
cmake -DWITH_VTK=OFF -DCMAKE_BUILD_TYPE=Release 
  -DCMAKE_INSTALL_PREFIX=~/Software/OpenCVLibs/opencv-3.1.0/release 
  ~/Software/opencv-3.1.0 
make && make install

디버그와 유사합니다. 디렉토리가 다릅니다. 하나는 내 랩톱에서 내 사용자와 함께 있고 다른 하나는 다중 사용자 시스템에서 다른 사용자와 함께 있습니다.

그런 다음 OpenCV 문서에 제공된 예제를 사용하여 설정을 테스트했습니다. http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html

내 사용자 지정 OpenCV 위치를 사용하여 예제를 빌드하려면

cmake -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=~/Software/OpenCVLibs
  /opencv-3.1.0/release/share/OpenCV exampleSourceDir

이것은 첫 번째 시스템 (gcc 버전 5.3.0)에서 작동하지만 두 번째 시스템 (gcc 버전 4.6.3)에서는 실패합니다. 여기서 gcc 버전이 중요하다고 생각하지 말고 완전성을 위해 언급하십시오. 첫 번째 시스템에는 설치된 시스템 경로에 OpenCV가없고 두 번째 시스템에는있는 것과 관련이있을 수 있습니다. 그러나 빌드는 다음과 함께 실패합니다.

/usr/bin/cmake -E cmake_link_script CMakeFiles/DisplayImage.dir/link.txt --verbose=1
/usr/bin/c++   -O3 -DNDEBUG    CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o  -o DisplayImage -rdynamic /home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videostab.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videoio.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_video.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_superres.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_stitching.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_shape.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_photo.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_objdetect.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_ml.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgproc.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgcodecs.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_highgui.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_flann.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_features2d.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_core.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_calib3d.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_features2d.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_ml.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_highgui.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_videoio.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgcodecs.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_flann.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_video.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_imgproc.so.3.1.0 
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib/libopencv_core.so.3.1.0 -Wl,-rpath,
/home/me/Software/OpenCVLibs/opencv-3.1.0/release/lib 
CMakeFiles/DisplayImage.dir/DisplayImage.cpp.o: In function `main':
DisplayImage.cpp:(.text.startup+0xb8): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text.startup+0x1d7): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text.startup+0x1f4): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
DisplayImage.cpp:(.text.startup+0x223): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
collect2: ld returned 1 exit status

이 호출에서 사용자 지정 위치의 라이브러리가 사용되어야한다고 생각합니다. 그렇다면 왜 실패합니까? 두 컴퓨터에서 opencv_test_imgcodecs를 실행했는데 제대로 작동합니다. 내 문제를 해결하는 방법에 대한 아이디어가 있습니까? 두 번째 시스템에 다른 OpenCV 설치 때문입니까? 도움을 주셔서 미리 감사드립니다!

user3917718

CMakeList.txt를 변경하여 문제를 해결할 수 있습니다. 나는 알고있다

find_package( OpenCV HINTS "~/Software/OpenCVLibs/opencv-3.1.0/release/share/OpenCV/" )

그것에. 그 전에

find_package( OpenCV Required )

이제 더 이상 OpenCV_DIR을 지정할 필요가 없으며 다음과 같이 빌드 할 수 있습니다.

cmake -DCMAKE_BUILD_TYPE=Release exampleSourceDir
make

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

OpenCV : imread ()에 대한 정의되지 않은 참조

googletest에 cmake를 사용할 때`pthread_getspecific '에 대한 정의되지 않은 참조

ifort / icc를 사용할 때 'main'에 대한 정의되지 않은 참조

cv :: imread (cv :: String const &, int)에 대한 정의되지 않은 참조

cmake 및 opencv를 사용하여 "할로우 월드"오류 빌드 : 비주얼리 제이션의 모듈에 대한 정의되지 않은 참조

CMake에서 GTK를 사용할 때 '정의되지 않은 참조'

Mingw로 OpenCV 3.1의 공유 빌드를 만드는 동안 cv :: redirectError에 대한 정의되지 않은 참조

sprintf ()를 사용할 때 __mulhi3에 대한 정의되지 않은 참조-Windows의 Code :: Blocks에서 AVR GCC

OpenCV 3.4.3에서`cv :: String :: deallocate () '오류에 대한 정의되지 않은 참조

링크에 ld를 사용할 때 '__main'에 대한 정의되지 않은 참조

하드 플로트(PowerPC)를 사용할 때 `__floatundisf'에 대한 정의되지 않은 참조

GCC 크로스 컴파일러를 사용할 때 printf에 대한 정의되지 않은 참조

Makefile로 컴파일할 때 opencv 함수에 대한 정의되지 않은 참조

Qt Quick + CMake + 사용자 정의 QObject는 `vtable'에 대한 정의되지 않은 참조를 생성합니다.

Linux / Ubuntu에서 openCV 애플리케이션을 컴파일 할 때 정의되지 않은 참조 cv : ....를 해결하는 방법은 무엇입니까?

Cmake / Linux / C ++에서 SDL2를 사용할 때 정의되지 않은 참조

축에 대한 슬라이더를 추가 할 때 main에 대한 정의되지 않은 참조

ARM mbed 용 PicoTCP를 컴파일 할 때 pico_dhcp_server_initiate에 대한 정의되지 않은 참조

CMake를 사용하여 lib .a로 생성 된 메서드에 대한 정의되지 않은 참조

내 함수 내에서 간단한 클래스를 사용할 때 정의되지 않은 참조 오류

Linux에서 ncurses를 사용할 때 정의되지 않은 참조

C ++에서 정적 라이브러리를 연결할 때 ...에 대한 정의되지 않은 참조

uclibc를 사용할 때 fenv.h의 함수에 대한 정의되지 않은 참조를 해결하는 방법은 무엇입니까?

GLFW를 정적으로 연결할 때`__ms_vsnprintf '에 대한 정의되지 않은 참조

OpenCV-NDK 업데이트 후 'cv :: CascadeClassifier :: detectMultiScale ()에 대한 정의되지 않은 참조

C ++의 헤더에서 네임 스페이스를 사용할 때 오류에 대한 정의되지 않은 참조

우분투 20.04에 CGNS를 설치할 때 dlsym dlerror에 대한 정의되지 않은 참조

`cv :: Stitcher :: createDefault (bool) '에 대한 정의되지 않은 참조

`cv :: groupRectangles`에 대한 정의되지 않은 참조

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관