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

时间:2012-11-19 06:35:30

标签: java dll 64-bit 32-bit

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

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

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

此致,Ben

2 个答案:

答案 0 :(得分:9)

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

您的选择是:

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

  

我尝试在32位虚拟机中运行,它可以在eclipse中运行,但是当我导出项目时,我也会遇到同样的错误。

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

答案 1 :(得分:2)

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

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