1

我本质上是在尝试遵循此处描述的 SO 解决方案,但遇到了问题。

这基本上就是我在 JNI 库中所做的事情:

handle = dlopen("/data/data/lib/my.package/lib/myLibrary.so", RTLD_LAZY);
myFunctionName = (func)dlsym(handle, "main");
(*myFunctionName)(numberOfArgs, arguments);

问题是上述只有在

System.loadLibrary("myLibrary")

从调用 JNI 的相同 Java 代码调用。但这显然违背了通过 dlopen 加载库的目的。

我从 LocCat 得到的只是

A/libc(29472): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)

出了什么问题?它与 myLibrary.so 的构建参数有关吗?

4

1 回答 1

1

在使用 dlerror() 诊断问题后,我实际上发现 dlopen 失败了。转的路径错了。它应该是:

handle = dlopen("/data/data/my.package/lib/myLibrary.so", RTLD_LAZY);
于 2013-03-06T18:22:06.400 回答