我正在尝试将第 3 方 dll 用于我用 java 编写的程序。不幸的是,它只支持 32 位。当我尝试在 64 位 VM 中加载 dll 时,出现以下错误:
Can't load IA 32-bit .dll on a AMD 64-bit platform
我尝试在 32 位 VM 中运行,该 VM 在 eclipse 中运行,但是当我导出项目时,我得到了同样的错误。请帮忙!
真诚的,本
您不能在 64 位 Hotspot JVM 中使用 32 位 DLL。它行不通。而且我不知道任何其他支持 32 位 DLL 的 64 位 JVM。
事实上,正如 Peter Lawrey 所指出的,这不仅仅是 JVM 的限制。没有主流操作系统允许以 64 位模式运行的应用程序加载和使用 32 位库。
您的选择是:
我尝试在 32 位 VM 中运行,该 VM 在 eclipse 中运行,但是当我导出项目时,我得到了同样的错误。
这只能意味着您正在运行一个 32 位 JVM 来在 Eclipse 中运行应用程序,以及一个 64 位 JVM 来在 Eclipse 之外运行应用程序。(问题是你如何运行应用程序,而不是你如何导出它......)
从 64 位 JVM 使用 32 位共享库的唯一方法是运行额外的 32 位 JVM 并通过 RMI、JMS 或某种形式的消息传递访问它。
它是 64 位程序(不仅仅是 Java)的一个内在限制,它不能与 32 位库交换指针。