当前位置: 首页 > 面试题库 >

Java Native Interface 64位系统上的32位dll

堵昊焱
2023-03-14
问题内容
E:\Code\Java\JNITest>java test
Exception in thread "main" java.lang.UnsatisfiedLinkError: E:\Code\Java\JNITest\test.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at test.main(test.java:16)`

使用Java本机接口时,我遇到了一个导致此错误的问题。我相信这是因为我使用MinGW编译了.dll,而我的系统是64位的,因此我的Java运行于64位,而MinGW编译为32位的.dll。无论如何,有没有强制我的Java在32位上运行?


问题答案:

您将必须安装32位JVM,然后才能运行代码。

如果要分发应用程序,则将要构建DLL的32位和64位版本。然后,使用以下技术来加载正确的DLL,无论您的客户是否满意。将32或64(MyJniDLL32.dll和MyJniDLL64.dll)追加到生成的输出文件中。

    String archDataModel = System.getProperty("sun.arch.data.model");
    System.loadLibrary(libraryName+archDataModel);


 类似资料:
  • 问题内容: 在Java中,是否保证int始终为32位,而长为64位,而不管体系结构是32位还是64位? 问题答案: Java是平台无关的。所以是32位,并且是64位的。

  • 下载了wamp 5.5。30从这里开始: http://sourceforge.net/projects/wampserver/files/WampServer2/wampserver2.5/wampserver2。5-Apache-2.4。9-Mysql-5.6。17-php5。5.12-32b。exe/下载 我从wamp服务器的官方网站找到了上面的链接:http://www.wampserve

  • 问题内容: 我有一个jar,但不知道它是用于64位系统还是32位系统。如何找出来? 编辑:我有本机库依赖项。 问题答案: Java字节码是Java字节码,无论它是用32位还是64位JDK构建的,都没有办法解决。 我认为用32位或64位编译jar并没有什么区别。它应该与机器无关;除非您具有某些本机库依赖项,或者将Java代码直接编译为本机代码。

  • 我编写了成功编译的汇编代码: 但是,当我尝试链接对象文件时,它失败了: 为了在64位操作系统(Ubuntu 14.04)上运行,我添加了<代码>。code32在电源的开头。s文件,但我仍然得到错误: 分段故障(堆芯倾倒) 电源:

  • 我有个奇怪的MSI!!!

  • 本文向大家介绍查看Linux系统是32位还是64位的方法总结,包括了查看Linux系统是32位还是64位的方法总结的使用技巧和注意事项,需要的朋友参考一下 方法1:getconf LONG_BIT 查看 如下例子所示: 32位Linux系统显示32, 64位Linux系统显示64。最简单、快捷的方法。 32 64  方法2:uname命令查看 如下例子所示,x86_64表示64位系统, i686