gpt4 book ai didi

java - 使用 JNI 执行时出错

转载 作者:行者123 更新时间:2023-11-30 09:49:29 25 4
gpt4 key购买 nike

我遵循了本教程 http://www.ibm.com/developerworks/java/tutorials/j-jni/section2.html (C 实现)用于实现 JNI 接口(interface)的简单示例,但在运行 java 文件时出现此错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\JNI_examples\example2\Sample1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at Sample1.main(Sample1.java:10)

我不知道为什么它认为它是 AMD 64 位...

我也试过用库的路径运行:java -Djava.library.path=.样本1

但这似乎没有任何帮助......

由于路径不同,我运行 cl 的方式略有不同,这是我运行的:

cl -I"C:\Program Files (x86)\Java\jdk1.6.0_24\include" -I"C:\Program Files (x86)\Java\jdk1.6.0_24\include\win32" -LD Sample1.c -FeSample1.dll

有什么线索吗?

谢谢!

最佳答案

当您为 64 位编译 DLL 时,您的 JVM 可能是 32 位的。 JVM 需要将库编译为与 JVM 相同的体系结构,无一异常(exception)。更改编译设置以编译 32 位 DLL,它应该可以工作。

IA-32 代表 Intel Architecture 32-bit,即 x86,而 AMD 64 与 x86-64 相关。英特尔最终获得了 AMD 产品的许可。

关于java - 使用 JNI 执行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com