[英]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.