2012-04-19 5 views
1

내 Java 코드는 JNI를 통해 공유 라이브러리 (예 : libtest.so)의 일부 C++ 코드를 호출합니다. 코드에는 libdebug.so라는 특수 디버깅 기호가 있습니다. 제가JNI 코드의 LD_PRELOAD 변수

LD_PRELOAD =/USR/LIB/자바 com.test.myMain libdebug.so

실행이 Exception in thread "main" java.lang.UnsatisfiedLinkError

으로 인해 멈출 때 호출로드되지 libdebug.so에서 심볼 (왜?).

내 Java 코드 내에서 라이브러리를 PRELOAD하려면 내 코드를 수정할 수 있는지 궁금합니다. 당신이 System.load을 사용하여 정적 블록에 디버그 라이브러리를로드하려고 할 수 있도록

답변

1

System.load 어떤 공유 라이브러리를로드 할 수 있습니다 (물론 내가 ... libdebug.so와 자바를 컴파일하고 싶지 않아) (당신이 이전 JNI 라이브러리를로드하십시오). 또는 JNI lib 앞에 System.loadLibary("debug")을 시도하십시오.

+0

어떻게 여러 라이브러리를로드합니까? 하나의 명령으로 그것을 수행 할 수 있습니까, 아니면 여러 개가 필요할 수 있습니까? – cateof

+1

AFAIK를로드하려면 여러 번 호출해야합니다. – Neet