2013-03-06 45 views
1

我基本上试图遵循一个SO解决方案here,但遇到了问题。在另一个JNI库中加载JNI库崩溃

实际上,这就是我氟里昂做了JNI库中:

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

的问题是,上面才会成功,如果

System.loadLibrary("myLibrary") 

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

所有我从LocCat得到的是

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

到底哪里出问题了?这与myLibrary.so的构建参数有关吗?

+1

只是要知道,为什么要加载一个库与本地代码与dlopen代替使用System.loadLibrary? – Esparver 2013-03-06 10:43:29

+0

要解决此问题:http://stackoverflow.com/questions/10649119/calling-native-method-twice-of-third-party-library-in-an-activity-causes-the-and – 2013-03-06 15:00:01

回答

0

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

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