java.lang.UnsatisfiedLinkError: C:\...\xxx.dll: Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
java.lang.UnsatisfiedLinkError: C:\...\xxx.dll: Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
我想加载 DLL 库来使用它,但我对这条消息有点问题
java.lang.UnsatisfiedLinkError: C:\xx\xx.dll: Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
这是我用来加载我的 DLL 库的代码
String arch = System.getProperty(ARCH_OS_CONSTANT);
if (arch.equals("32")) {
System.load("C:\..\xx.dll");
} else if (arch.equals("64")) {
System.load("C:\xx\xx.dll");
}
仍然有同样的问题,我希望我找到了解决方案,谢谢
我猜测 ARCH_OS_CONSTANT
的值是 "os.arch"
- 标准 属性 名称。
如果是这样,您的代码假设 Intel/AMD 32 位的 "os.arch"
的值为 "32"
。那是不正确的。根据 this Q&A,该值实际上将是 "x86"
,对于 Intel / AMD 64 位,它将是 "amd-64"
或 "x86-64"
。
还有一个名为 "sun.arch.data.model"
的 属性,它的值可以是 "32"
或 "64"
。不幸的是,它不是 javadoc 中列出的标准属性之一,并且某些 JVM 不支持它。
我猜你有错误的 Java-Runtime。也许您尝试使用 32 位 Java-Runtime 加载它,但它需要是 64 位或其他方式。
我想加载 DLL 库来使用它,但我对这条消息有点问题
java.lang.UnsatisfiedLinkError: C:\xx\xx.dll: Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
这是我用来加载我的 DLL 库的代码
String arch = System.getProperty(ARCH_OS_CONSTANT);
if (arch.equals("32")) {
System.load("C:\..\xx.dll");
} else if (arch.equals("64")) {
System.load("C:\xx\xx.dll");
}
仍然有同样的问题,我希望我找到了解决方案,谢谢
我猜测 ARCH_OS_CONSTANT
的值是 "os.arch"
- 标准 属性 名称。
如果是这样,您的代码假设 Intel/AMD 32 位的 "os.arch"
的值为 "32"
。那是不正确的。根据 this Q&A,该值实际上将是 "x86"
,对于 Intel / AMD 64 位,它将是 "amd-64"
或 "x86-64"
。
还有一个名为 "sun.arch.data.model"
的 属性,它的值可以是 "32"
或 "64"
。不幸的是,它不是 javadoc 中列出的标准属性之一,并且某些 JVM 不支持它。
我猜你有错误的 Java-Runtime。也许您尝试使用 32 位 Java-Runtime 加载它,但它需要是 64 位或其他方式。