2012-11-20 2 views
0

리눅스 (우분투) 시스템에서 플러그인 (동적 공유 라이브러리)을 사용하는 프로그램이 있습니다. 내 라이브러리 (플러그인)는 OpenCV를 사용합니다 (중요하지는 않음).공유 라이브러리를로드 할 수 없습니다 : 정의되지 않은 기호

내 플러그인은/usr/local/lib/mysoft /에 있습니다.

라이브러리를 사용하여 성공적으로 프로그램을 컴파일하고 성공적으로 설치 했으므로이 시점까지는 모든 것이 정상적으로 처리됩니다.

프로그램을 실행하면 일부 구성 파일을 기반으로 이러한 라이브러리가로드됩니다. 성공적으로로드 된 여러 라이브러리가 있지만 하나의 라이브러리를로드 할 수 없습니다. (라이브러리를 여는 데 사용 dlopen을())로드 할 때 그것은 나에게 오류를 제공합니다

/usr/local/lib/mysoft/libMyPlugin2.so: undefined symbol: _ZN2cv6resizeERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi 
Segmentation fault (core dumped) 
Tue Nov 20 19:11:29 CET 2012 

그것은 분명히 이력서 :: OpenCV의의 일부입니다하지만 난 왜 이해가 안되는 크기 조정을 찾기 위해 몇 가지 문제가있다.

내가 다음 사항을 확인 : 다른 도서관 내 프로그램의
  • 종속성뿐만 아니라 그것을 사용하지 않는 문제없이로드되기 때문에

    • OpenCV의 아마 제대로 설치되어, libMyPlugin2.so 또는 OpenCV의 체크 (누락 LDD) 모든 라이브러리와 바이너리의
    • 아키텍처가 같은 것으로 보인다와 (나는 누구 아이디어가 있습니까

    ) objdump를 -f으로 체크 무엇을 내가 틀렸어? 내가 한 OpenCV의 누락되었다 -

    문제 ... 그럼 난 문제를 발견 Linux shared library that uses a shared library undefined symbol

  • +0

    OpenCV의 여러 버전이 설치되어 있고 런타임에 잘못된 버전이 선택되었을 수 있습니다. –

    +0

    Andrey Kamaev가 맞 겠지만 OpenCV를 디버그 모드로 빌드하고 디버그 라이브러리로 실행 해보십시오. Ubuntu/Linux 배포판의 OpenCV에는 디버그 모드에서만 잡을 수있는 몇 가지 전제 조건이 있습니다. – Kamath

    +0

    OpenCV의 여러 버전을 설치했는데 올바른 버전 (ldd로 chcecked)을 연결 한 것은 맞습니다. 설치 제거 후에도 현재 단일 버전 만있을 때도 동일한 기능을 수행합니다 (소프트웨어를 다시 빌드하여 단일 vwersion과 연결됨). – bubo

    답변

    0

    이, 희망이 다른 사람을 도울 수 있습니다

    이 게시물이 도움이되지 않았다 여전히 관련이 보이지만 컴파일 할 때 라이브러리. 그래서 나는 "opencv_core opencv_highgui"를 "opencv_core opencv_imgproc opencv_highgui"로 바꾸었다. 모든 것이 작동한다.

    종속성 중 하나가 누락되었습니다. OpenCV에서 이전 버전의 OpenCV와 완벽하게 (심지어 빌드로) 작동했기 때문에 OpenCV에서 변경된 것 같습니다.

    관련 문제