2013-03-06 82 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);