繁体   English   中英

用java在64位机器上运行32位dll

[英]Running 32-bit dll on 64-bit machine in java

我正在尝试将 3rd-party 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 位 JVM。 (您可以在 64 位操作系统上运行 32 位 JVM ...)
  • 将 DLL 移植到 64 位。
  • 切换到纯 Java 或具有 64 位 DLL 的替代库。

我曾尝试在 32 位 VM 中运行,该 VM 可在 Eclipse 中运行,但是当我导出项目时,出现相同的错误。

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

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

它不能与 32 位库交换指针,这是 64 位程序(不仅仅是 Java)的固有限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM