【问题标题】:JNA using 32 bit dll on Win7 64 bit machineJNA 在 Win7 64 位机器上使用 32 位 dll
【发布时间】:2013-02-26 22:29:03
【问题描述】:

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

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

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

但我得到以下信息 - “error: java.lang.UnsatisfiedLinkError: Unable to load library 'Wrapper': The specified module could not be found.”

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

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

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

【问题讨论】:

    标签: java dll jna


    【解决方案1】:

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

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

    【讨论】:

    • 是否可以在 64 位 jre 上加载 32 位 dll?
    • 机器上可以安装32位和64位jre吗?主要在 Linux 上
    • 是的,您可以在一台机器上同时拥有 32 位和 64 位 JRE。我在 Linux、Windows 和 Solaris 上都这样做过。
    猜你喜欢
    • 2011-08-08
    • 1970-01-01
    • 2011-04-09
    • 2012-11-07
    • 2012-05-22
    • 1970-01-01
    • 2011-09-04
    • 2012-07-05
    • 2011-04-12
    相关资源
    最近更新 更多