java.lang.UnsatifiedLinkError:C:\…\xxx.dll:无法在AMD 64位平台上加载此.dll(机器代码=0xbd)

java.lang.UnsatifiedLinkError:C:\…\xxx.dll:无法在AMD 64位平台上加载此.dll(机器代码=0xbd),java,dll,java-8,java-native-interface,unsatisfiedlinkerror,Java,Dll,Java 8,Java Native Interface,Unsatisfiedlinkerror,我想加载DLL库来使用它,但我对这条消息有点问题 java.lang.UnsatifiedLink错误:C:\xx\xx.dll:无法在AMD 64位平台上加载此.dll机器代码=0xbd 这是我用来加载DLL库的代码 String arch = System.getProperty(ARCH_OS_CONSTANT); if (arch.equals("32")) { System.load("C:\\..\\xx.dll

我想加载DLL库来使用它,但我对这条消息有点问题

java.lang.UnsatifiedLink错误:C:\xx\xx.dll:无法在AMD 64位平台上加载此.dll机器代码=0xbd

这是我用来加载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_常量的值是OS.ARCH——标准属性名

如果是这样,那么您的代码将假定英特尔/AMD 32位的os.arch值为32。那是不对的。根据,该值实际上将是x86,对于Intel/AMD 64位,它将是AMD-64或x86-64


还有一个名为sun.arch.data.model的属性,其值可以是32或64。不幸的是,它不是javadoc中列出的标准属性之一,一些JVM不支持它。

我猜您的Java运行时是错误的。也许您尝试使用32位Java运行时加载它,但它需要64位或其他方式。

如果在这两种情况下使用相同的路径,那么if/else有什么意义?只是一个fasle代码副本,64位操作系统版本的else-if条件您应该编辑问题并将实际运行的代码放入其中。更新完成…错误消息显示C:\VIMS\dll\x86\UFScanner.dll,因此显然您没有尝试加载正确的dll。拱门的价值是什么?