我实际上是在尝试遵循描述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的构建参数有关?
答案 0 :(得分:0)
使用dlerror()诊断问题后,我发现dlopen失败了。 变成了路径错了。它应该是:
handle = dlopen("/data/data/my.package/lib/myLibrary.so", RTLD_LAZY);