java - 为什么我得到 java.lang.UnsatisfiedLinkError : Unable to load library?

标签 java windows jna

我正在尝试使用 JNA 从我的 Java 应用程序调用 .dll 文件。我收到以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Windows\System32\foo.dll': The specified module could not be found.

虽然我在 64 位 Windows 7 PC 上运行它,但 .dll 和我的 jdk 都是 32 位的 (OS_ARCH="i586")。
.dll 位于 System32 文件夹中。

我正在使用 Eclipse 并将 System32 文件夹添加到 Java 构建路径属性中库选项卡下 JRE 系统库中的 native 库位置(尽管我认为这不是必需的)。

如有任何帮助或建议,我将不胜感激。
谢谢,
-蒙克。

最佳答案

这取决于 file system redirector .您正在 WOW64 模拟器下执行,该模拟器在 64 位系统上模拟 32 位 Windows。在 WOW64 下,system32 被重定向到 SysWOW64。您需要将 DLL 放在那里。

话虽如此,系统目录归系统所有,并且是系统私有(private)的。您不应将 DLL 放入系统目录。您应该找到一种方法将您的 DLL 放在其他位置。

关于java - 为什么我得到 java.lang.UnsatisfiedLinkError : Unable to load library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17698561/

相关文章:

java - 为什么我无法连接到 openfire 服务器?

c - C编程串口发送字符串

通过 Web 启动 (jnlp) 的 JavaFX 桌面应用程序 - 不一致的行为

java - Bukkit/Spigot API : Mapping damager and Victim

java - 我可以根据菜单命令在两个不同库中的公共(public)类之间切换吗?

windows - 使用手写笔在 Windows(尤其是 Visual Studio)中编写和编辑文本

c++ - OID_802_11_BSSID_LIST 的 DeviceIoControl 错误 87

java - JNA 问题 - DLL 仅使用从 Java 填充的数组的一部分

java - JNA - Ubuntu 上的 java.lang.UnsatisfiedLinkError

java - 线程中出现异常 "main"java.lang.UnsatisfiedLinkError : jnidispatch (/com/sun/jna/win32-x86/jnidispatch. dll) 在资源路径中找不到