有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

我曾尝试在32位虚拟机中运行,该虚拟机在eclipse中工作,但当我导出项目时,我得到了相同的错误。请帮忙

真的,本


共 (2) 个答案

  1. # 1 楼答案

    不能在64位热点JVM中使用32位DLL。这行不通。我不知道还有其他64位JVM支持32位DLL

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

    你的选择是:

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

    I have tried running in a 32-bit VM, which works in eclipse, but when I export the project, I get the same error.

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

  2. # 2 楼答案

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

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