簡體   English   中英

在Eclipse for Java中使用靜態C ++庫

[英]Use static C++ library in Eclipse for Java

我想在我的Java程序中使用現有的靜態C ++庫。 我讀到它應該是可能的 這些步驟(幾乎)與鏈接動態庫的步驟相同。 不幸的是,如果我嘗試加載庫:

static { 
    System.loadLibrary("mylibrary");    
}

我得到一個例外:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylibrary in java.library.path

我嘗試在手動調用System.loadLibrary之前設置java.library.path,但它沒有幫助:

System.setProperty("java.library.path", "/workspace/LibraryTest/lib/");

在項目的運行配置中設置LD_LIBRARY_PATH也無法解決問題。 我犯了同樣的錯誤。 對於共享庫,它工作正常。 目前我在Debian Jessie的Eclipse Mars中使用Oracle Java8。 圖書館是否需要采用JNI_OnLoad_mylibrary方法? 有人遇到類似問題嗎?

編輯

嘗試/ usr / lib目錄並添加了JNI_OnLoad_mylibrary 沒有成功。

也許你的代碼不可重定位? 這似乎可能會破壞JVM。 -fPIC編譯,看看會發生什么。

從答案到另一個問題,您需要在二進制文件中定義JNI_OnLoad_name-of-your-library才能使其正常工作。 C ++名稱毀了你的一天嗎? 您可能需要extern "C" ,它可以讓JVM找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM