2014-01-06 66 views
0

共享庫初始化我寫在Linux共享庫,和我有一個構造函數失敗在Linux

void __attribute__ ((constructor)) od_init(void); 

在od_init我初始化我的lib了一些數據,我從配置文件帶來。 我的問題是如何在配置文件損壞或找不到或者其他任何情況下進行失敗處理,因爲屬性((構造函數))返回void並且無效。 後來我用這個共享庫從我的Java代碼,我用下面的命令加載它:

System.loadLibrary("od_jni"); 

,我想這個調用看起來像這樣:

try 
{ 
    System.loadLibrary("od_jni"); 
} 
catch 
{ 
    ..... 
} 

有一些技巧來讓圖書館的使用者明白出了什麼問題?

P.S. Google對我的問題沒有顯示出好的結果。

您的想法和建議,將不勝感激

回答

1

不要寫一個庫初始化可能出現故障。考慮一下本機程序在與這樣的庫鏈接時如何工作。它也會很難處理這樣的失敗。只需提供一個顯式的初始化方法,並在加載庫後從Java端調用它。這個顯式初始化方法可以返回任意值,甚至可以通過JNI引發異常。

+0

不像我想要的那樣乾淨,但看起來沒有別的辦法。感謝你的回答。 – Dabo