在java中的64位机器上运行32位dll

我试图使用第三方dll作为我在java中编写的程序。 不幸的是,它只有32位支持。 当我尝试在64位VM中加载DLL时,出现以下错误:

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

我试过在32位虚拟机中运行,它在eclipse中运行,但是当我导出项目时,我得到了同样的错误。 请帮忙!

真诚的,本

您不能在64位Hotspot JVM中使用32位DLL。 它不会起作用。 我不知道任何其他支持32位DLL的64位JVM。

你的选择是:

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

我试过在32位虚拟机中运行,它在eclipse中运行,但是当我导出项目时,我得到了同样的错误。

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

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

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