리눅스 (우분투) 시스템에서 플러그인 (동적 공유 라이브러리)을 사용하는 프로그램이 있습니다. 내 라이브러리 (플러그인)는 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
OpenCV의 여러 버전이 설치되어 있고 런타임에 잘못된 버전이 선택되었을 수 있습니다. –
Andrey Kamaev가 맞 겠지만 OpenCV를 디버그 모드로 빌드하고 디버그 라이브러리로 실행 해보십시오. Ubuntu/Linux 배포판의 OpenCV에는 디버그 모드에서만 잡을 수있는 몇 가지 전제 조건이 있습니다. – Kamath
OpenCV의 여러 버전을 설치했는데 올바른 버전 (ldd로 chcecked)을 연결 한 것은 맞습니다. 설치 제거 후에도 현재 단일 버전 만있을 때도 동일한 기능을 수행합니다 (소프트웨어를 다시 빌드하여 단일 vwersion과 연결됨). – bubo