Win64 - JNI:UnsatisfiedLinkError:找不到依赖库

时间:2015-06-15 06:33:03

标签: java dll java-native-interface unsatisfiedlinkerror win64

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

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

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

我在两台电脑上完全一样。 Path或java.library.path在两者上都是相同的。

我的开始脚本如下所示:

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

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

1 个答案:

答案 0 :(得分:2)

检查以下内容。

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

加入linux应该是像

这样的东西

System.load.library( “MYLIB”);

然后lib名称应该像libmylib.so。

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

-Djava.library.path =“你的dll位置的路径”。

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

4)确保dll不处于调试模式,因为它需要机器中的微软调试运行时库(如果是这样的话)(我已经完成了很多次)。如果依赖项存在任何问题,则path walker应该可以帮助您识别依赖性问题。