2012-12-13 33 views
0

我正在研究Java。我想用下面的代碼調用加載Java類的CPP共享庫:如何在Java中加載cpp庫時避免異常?

System.loadLibrary("libraryName"); 

但含有一些不確定的符號本身裝載CPP庫。 所以,當我試圖編譯Java類,那麼它會拋出和異常如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError:libraryName.so: 
libraryName.so: undefined symbol: ... 

做,我們有什麼選擇成功加載CPP庫,即使它包含未定義的符號?

+0

爲什麼要加載它,如果它包含問題? –

+0

因爲它是'.so'庫,我認爲它是Unix。 –

+0

@PeterLawrey是的,它是Linux – BSalunke

回答

1

是的,你可以但在這種情況下這個符號/方法/領域是需要加載庫。在某些情況下,直到程序運行時纔會發現丟失的符號。 ;)

獲取該庫加載的唯一方法是爲庫提供所需的符號。

+0

雅我知道所有未定義的符號。我如何使用它們成功加載庫? – BSalunke

+0

創建一個定義這些符號的虛擬庫,併爲其提供預期的庫名稱。如果你使用'ldd libraryName.so',它應該告訴你它期望加載什麼和缺少什麼。如果每個圖書館都在那裏,您可以用虛擬符號預先加載圖書館。 –