Win64 - JNI: UnsatisfiedLinkError: Can't find dependent libraries

Win64 - JNI: UnsatisfiedLinkError: Can't find dependent libraries

我有一个自己的 JNI dll,它依赖于其他几个 dll(准确地说是零 MQ)。 我已经通过 Visual Studio 在 Windows 7(64 位)上编译了这些依赖项。我定义我得到 64 位 dll。

在开发者机器上它工作得很好。 但是,如果我将这些 dll 移动到另一台机器(也是 Windows 7 64 位),我会收到标题中提到的错误。

我也将我的 minigw-64 安装移到了这台机器上,在那里编译我的 dll。为此,当然,我还需要所有其他 dll,并且我可以成功编译它。但是如果我启动 jar 文件(我的 jni-lib 将被加载)我得到这个 UnsatisfiedLinkError.

我在两台电脑上做的完全一样。两者的路径或 java.library.path 相同。

我的启动脚本如下所示:

set PATH=C:\Path\To\my\dependencies;.;%PATH%
java -jar myjar.jar
pause

任何想法可能是什么问题?

检查以下内容。

1) 确保库名没有拼写错误。

incase of linux 应该是

System.load.library("mylib");

那么库名应该像 libmylib.so.

2) 您需要添加 java 库路径的位置,例如

-Djava.library.path="path to your dll location".

3) 确保你已经在你正在使用的 Jre 版本中编译了你的库,即(如果你使用 64 位 Jre,你需要在 64 位中编译 dll)。或者您可以使用 -d32 或 -d64 标志(如果在您的 jre 中可用)。

4) 确保 dll 未处于调试模式,因为如果是这样的话,它需要机器中的 Microsoft 调试运行时库(我已经做了好几次)。如果依赖项有任何问题,path walker 应该可以帮助您确定依赖项问题。