2012-04-19 55 views
1

我的java代码通过JNI调用共享库中的一些C++代码(例如libtest.so)。该代码用一些特殊的调试符号来存储libdebug.so。当我打电话JNI代码中的LD_PRELOAD变量

LD_PRELOAD =/usr/lib中/ libdebug.so的java com.test.myMain

执行与Exception in thread "main" java.lang.UnsatisfiedLinkError

停止,因为从libdebug.so没有装载被符号(为什么?)。

我想知道是否有可能修改我的代码,以便在我的java代码中预加载库。 (当然我不想用libdebug.so编译java)

回答

1

System.load可以用来加载任何共享库,所以你可以尝试使用System.load(在你之前)加载一个静态块的调试库加载你的JNI库)。 或在JNI库之前尝试System.loadLibary("debug")

+0

如何加载多个库?我可以用一个命令来做,还是需要多个? – cateof 2012-04-19 09:58:57

+1

您将需要多次调用'load' AFAIK。 – Neet 2012-04-19 10:11:16