【发布时间】:2011-12-23 07:41:17
【问题描述】:
我正在尝试使用我使用 Makefile 在 linux 机器上构建的 System.loadLibrary("myDllFile") 加载 dll。我得到一个
java.lang.UnsatisfiedLinkError c:\test\myDllFile.dll: can't load this .dll (machine code=0x101) on a IA 32-bit platform
运行包含loadLibrary 语句的主java 类时出现异常。我正在尝试在 Windows XP 上运行 java 类。 windows xp(32位)和windows 7(64位)需要单独的dll吗?
【问题讨论】:
-
是的,Win32 .dll 与 Windows/64 位 .dll 不兼容。 Linux 共享库同样具有不兼容的 elf-32 和 elf-64 格式。这四种互斥的二进制格式中没有一种通常与 Java 一起使用。除非你使用 JNI。
-
所以我必须在 32 位机器上创建 dll,或者是否有 makefile 选项可以做到这一点?
-
这取决于谁编写了您的 Makefile,以及您如何编译它。有时Linux可以用
setarch i686 make“欺骗”Makefile;但这非常依赖于项目。
标签: java