6

我正在尝试将第 3 方 dll 用于我用 java 编写的程序。不幸的是,它只支持 32 位。当我尝试在 64 位 VM 中加载 dll 时,出现以下错误:

Can't load IA 32-bit .dll on a AMD 64-bit platform

我尝试在 32 位 VM 中运行,该 VM 在 eclipse 中运行,但是当我导出项目时,我得到了同样的错误。请帮忙!

真诚的,本

4

2 回答 2

12

您不能在 64 位 Hotspot JVM 中使用 32 位 DLL。它行不通。而且我不知道任何其他支持 32 位 DLL 的 64 位 JVM。

事实上,正如 Peter Lawrey 所指出的,这不仅仅是 JVM 的限制。没有主流操作系统允许以 64 位模式运行的应用程序加载和使用 32 位库。

您的选择是:

  • 切换到 32 位 JVM。(您可以在 64 位操作系统上运行 32 位 JVM ...)
  • 将 DLL 移植到 64 位。
  • 切换到纯 Java 或具有 64 位 DLL 的替代库。

我尝试在 32 位 VM 中运行,该 VM 在 eclipse 中运行,但是当我导出项目时,我得到了同样的错误。

这只能意味着您正在运行一个 32 位 JVM 来在 Eclipse 中运行应用程序,以及一个 64 位 JVM 来在 Eclipse 之外运行应用程序。(问题是你如何运行应用程序,而不是你如何导出它......)

于 2012-11-19T06:42:45.577 回答
4

从 64 位 JVM 使用 32 位共享库的唯一方法是运行额外的 32 位 JVM 并通过 RMI、JMS 或某种形式的消息传递访问它。

它是 64 位程序(不仅仅是 Java)的一个内在限制,它不能与 32 位库交换指针。

于 2012-11-19T08:37:25.373 回答