4

在过去的 8 个月里,我一直在使用 Java。目前我正在使用 JNA 加载第三方 DLL,它在 32 位 WinXP 和 32 位 Win7 机器上运行良好。

在 64 位 Win7 机器上,这个第三方 dll 存在于C:\Program Files(x86)下,我认为这意味着它是一个 32 位 DLL。所以,这是我目前使用的配置,

Win7 机器 - 64 位,第三方 dll - 32 位(根据上述假设),JRE - 尝试使用 32 位和 64 位

但我得到以下信息 - “错误:java.lang.UnsatisfiedLinkError:无法加载库'Wrapper':找不到指定的模块。”

请让我知道 JNA 是否支持在 64 位机器上使用 32 位 JRE 加载 32 位 DLL。此外,如果这个 32 位 DLL 依赖于其他 32 位和 64 位 DLL,JNA 仍然支持它。

我将使用 procexp 来确定我是否缺少任何依赖项。我会相应地更新这篇文章。

请提供您的专家建议。提前致谢 !

4

1 回答 1

7

JNA 确实支持在 64 位机器上加载 32 位 DLL。但我们需要一个 32 位的 JVM 来执行此操作。我使用 Platform.is64Bit() 来确定 DLL 的路径。我了解到此方法返回 JVM 而不是操作系统的配置。

所以,就我而言,当我在 64 位机器上使用 32 位 VM 时,DLL 的路径是错误的。

于 2013-02-27T19:27:01.767 回答