2013-02-26 135 views
3

我在過去的8個月中一直在Java中工作。目前我正在使用JNA加載第三方DLL,並且它在32位WinXP和32位Win7機器上運行良好。JNA在Win7 64位機器上使用32位DLL

在64位的Win7機器上,這個第三方DLL出現在C:\ Program Files(x86),我假設這意味着它是一個32位的DLL。所以,這裏是我迄今所使用的配置,

Win7的機 - 64位, 第三方DLL - 32位(按照上面提到的假設), JRE - 試圖與32位和64位

但我得到以下 - 「錯誤:java.lang.UnsatisfiedLinkError:無法加載庫'包裝':無法找到指定的模塊。」

如果JNA支持在64位機器上使用32位JRE加載32位DLL,請讓我知道。另外,如果這個32位DLL依賴於其他32位DLL,JNA仍然支持它。

我打算使用procexp來了解我是否缺少任何依賴關係。我會相應地更新這篇文章。

請提供您的專家意見。提前致謝 !

回答

6

JNA支持在64位機器上加載32位DLL。但是我們需要一個32位的JVM來做到這一點。 我正在使用Platform.is64Bit()來確定DLL的路徑。我瞭解到此方法返回JVM的配置,而不是操作系統。

因此,在我的情況下,當我在64位機器上使用32位虛擬機時,DLL的路徑是錯誤的。

+0

是否有可能在64位jre上加載32位dll? – Tobia 2014-05-28 14:49:37

+0

是否可以在機器上安裝32位和64位jr?主要在Linux上 – 2016-07-21 20:54:35

+0

是的,您可以同時在一臺機器上同時安裝32位和64位JRE。我在Linux,Windows和Solaris上都這樣做了。 – 2017-12-05 15:42:00