我正在研究Eclipse上的Java項目,該項目通過JNI使用C++ OpenCV庫。一些圖像處理算法在本機端用OpenCV實現,我希望通過JNI使用它們。如何解決「java.lang.UnsatisfiedLinkError:無法找到依賴庫」沒有System32?
我已經構建了一個C++ DLL項目來鏈接到Java,這導致了MyLibrary.dll
文件。我使用GCC 6.3編譯器編譯OpenCV,並在Eclipse CDT上使用相同的GCC 6.3編譯器編譯C++代碼(以及MinGW Linker)。我還檢查了是否有使用Dependency Walker的任何依賴性問題。到目前爲止我沒有錯誤。
之後,我試圖從Java代碼加載庫如下:
System.loadLibrary("MyLibrary")
我已經設置與-Djava.library.path=path\to\MyLibrary
的路徑,並確保該JVM知道本機庫的地址。我還在MyLibrary.dll
旁邊添加了所需的OpenCV庫。
不過,我得到以下錯誤:
Exception in thread "main" java.lang.UnsatisfiedLinkError: MyLibrary.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)
...
然後問題消失了,當我移動相關的OpenCV庫到System32
文件夾。
我的問題是;我怎樣才能解決這個問題而不移動所需的DLL文件到System32
文件夾?
@isacikgoz謝謝,這就像一個魅力。 –
@isacikgoz現在看起來很明顯,但是當錯誤信息一直說:「找不到依賴庫」時,我不知道還有其他庫需要加載。我使用DLL依賴關係walker來查找相關的庫,並根據您的建議加載它們,現在它可以工作!謝謝。 – KSK