2012-04-19 26 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