2013-07-17 82 views
2

我想從我的Java應用程序使用JNA調用.dll文件。我得到以下異常:爲什麼我會得到java.lang.UnsatisfiedLinkError:無法加載庫?

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Windows\System32\foo.dll': The specified module could not be found.

無論是.dll和我的JDK是32位(OS_ARCH = 「i586的」),雖然我是一個64位的Windows 7 PC上運行它。
該.dll位於System32文件夾中。

我正在使用Eclipse,並已將System32文件夾添加到Java Build Path Properties中Libraries選項卡下的JRE System庫中的Native庫位置(儘管我認爲這不應該是必需的)。

我將不勝感激任何幫助或建議。
謝謝,
-Munk。

回答

1

這是下降到file system redirector。您正在使用WOW64仿真器執行模擬64位系統上的32位Windows。在WOW64下,system32被重定向到SysWOW64。你需要把你的DLL放在那裏。

就是這樣說的,系統目錄是系統擁有的,也是私有的。預計不會將DLL放入系統目錄中。您應該找到一種方法將DLL放在其他位置。

+0

我試圖讓這個在處理環境中工作的.dll沒有太多的樂趣。我已經發布了一個新的線程[這裏](http://stackoverflow.com/questions/17790090/jna-unsatisfiedlinkerror-in-processing),並將不勝感激任何迴應。感謝@ David-Heffernan回覆此主題。 –

0

錯誤的另一個原因是該DLL只支持32位版本而不支持64位操作系統。你必須確認dll供應商。

+0

這很難說是真的。如果這是真的,32位Java將如何執行? –

0

我的操作系統是windows-x64,我的jdk是x64。所以問題和你一樣。 我的解決方案是您必須安裝jdk-x86,並將您的dll放入jdk-x86/bin目錄。

相關問題