我在Java工作了8个月。目前我正在使用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中:无法加载库‘包装’:指定的模块找不到”
如果JNA支持在64位计算机上使用32位JRE加载32位DLL,请告诉我。此外,如果这个32位DLL依赖于其他32位和64位DLL将JNA仍然支持它。
我将使用procexp来查明我是否缺少任何依赖项。我会相应更新这篇文章。
请提供您的专家建议。提前致谢!
答案 0 :(得分:7)
JNA支持在64位机器上加载32位DLL。但是我们需要一个32位的JVM才能做到这一点。 我使用Platform.is64Bit()来确定DLL的路径。我了解到这个方法返回JVM的配置,而不是操作系统。
所以,在我的情况下,当我在64位机器上使用32位VM时,DLL的路径是错误的。