2

我的 java 代码通过 JNI 调用来自共享库(例如 libtest.so)的一些 C++ 代码。该代码带有一些特殊的调试符号,这些符号存在于 libdebug.so 中。当我打电话

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

执行停止Exception in thread "main" java.lang.UnsatisfiedLinkError

因为 libdebug.so 中的符号未加载(为什么?)。

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

4

1 回答 1

1

System.load可用于加载任何共享库,因此您可以尝试使用System.load(在加载 JNI 库之前)在静态块中加载调试库。System.loadLibary("debug")或者在您的 JNI 库之前尝试。

于 2012-04-19T08:20:08.067 回答