解決JNI 專案中的UnsatisfiedLinkError:缺少依賴函式庫
在JNI 專案中,出現UnsatisfiedLinkError 庫」當自訂程式庫(例如mylib.dll)依賴系統搜尋路徑中不可用的第三方程式庫(例如libsndfile-1.dll)時,可能會出現「」。要解決此問題,需要遵循幾個關鍵步驟:
-
確保正確的DLL 放置: 放置自訂DLL (mylib.dll) 和所需的依賴項(libsndfile - 1.dll)與Java 應用程式的JAR 檔案位於同一目錄中。
-
驗證 DLL 函數命名: 檢查自訂 DLL 中的函數名稱是否與 JNI 標頭中定義的函數名稱完全符合檔案。如有必要,請在建置過程中調整連結器標誌以確保正確的方法命名。
-
考慮Windows 特定行為: 在Windows 上,如果java.library.path 系統屬性未明確指定設定後,DLL 必須駐留在目前工作目錄或Windows PATH 環境變數中包含的目錄中。
其他故障排除提示:
- 驗證Dependency Walker 警告: 即使dependency walker 顯示MPRAPIDLL 和SHLW. DLL 的未解析導入,這些警告通常也可以被忽略,如DW 常見問題中所述。
-
檢查共享庫搜尋路徑: 使用命令「java -XshowSettings:properties -version」(Java 8 及更高版本中可用)顯示共享庫搜尋路徑並驗證所需的DLL是否可訪問。
-
消除類路徑問題:類路徑和共享庫搜尋路徑是獨立且不相關的。確保所有必需的 JAR 檔案都正確包含在類別路徑中。
透過仔細執行這些步驟,開發人員可以解決與 JNI 專案中缺少依賴函式庫相關的 UnsatisfiedLinkErrors,從而使他們的應用程式順利運作。
以上是為什麼我的 JNI 專案拋出「UnsatisfiedLinkError:找不到依賴函式庫」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!