在另一个JNI库中加载JNI库崩溃

时间:2013-03-06 10:09:03

标签: android java-native-interface jniwrapper

我实际上是在尝试遵循描述here的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的构建参数有关?

1 个答案:

答案 0 :(得分:0)

使用dlerror()诊断问题后,我发现dlopen失败了。 变成了路径错了。它应该是:

handle = dlopen("/data/data/my.package/lib/myLibrary.so", RTLD_LAZY);