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 位或其他方式。