2009-09-02 93 views
2

我有一個Java應用程序,它必須加載一個具有一些依賴關係的DLL。我將所有需要的DLL複製到同一個文件夾中。我設置的DLL使用SeeingMachine FaceApi庫。現在,當我啓動Java應用程序時,我將得到一個錯誤,我的DLL無法找到依賴關係:如何解決Java JNI DLL依賴關係

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\[..]\bin_dbg\HeadTrackerDLL.dll: Can't find dependent libraries 
      at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
      at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
      at java.lang.ClassLoader.loadLibrary(Unknown Source) 
      at java.lang.Runtime.loadLibrary0(Unknown Source) 
      at java.lang.System.loadLibrary(Unknown Source) 
      at Tracker.<clinit>(Tracker.java:12) 
      at TrackerControls.<init>(TrackerControls.java:18) 
      at Main.main(Main.java:6) 

我該如何解決問題?因爲Dependency Walker沒有顯示任何錯誤。我不想手動加載所有DLL文件。

+0

請包括運行java的命令行/腳本,確認你的'library.path'設置爲什麼,並且所有庫都在該路徑上。 – 2009-09-02 15:48:48

+0

您是否在啓動應用程序時指定了java庫路徑? – 2009-09-02 15:54:13

+0

我設置這條線到Eclipse VM參數字段: -Djava.library.path = $ {workspace_loc}/bin_dbg/HeadTrackerDLL 還我試圖 -Djava.library.path = $ {workspace_loc}/bin_dbg 但沒有用。 – sn3ek 2009-09-02 16:06:45

回答

2

所以我想我解決了我的問題與mt.exe工具。

mt.exe -manifest HeadTrackerDLL.dll.intermediate.manifest -outputresource:HeadTrackerDLL.dll; 

通過此代碼行清單文件和dll文件將被打包到dll文件,因此所有的依賴位於。

我的應用程序正在運行。我希望這是解決方案。