2013-02-26 90 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