2015-06-15 55 views
0

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

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

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

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

我的启动脚本是这样的:

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

任何想法什么问题可能?

回答

1

检查以下内容。

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

柜面的linux应该像

System.load.library( “MYLIB”)的一些事情;

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

2)你需要像

-Djava.library.path =添加Java库路径的位置“路径,您的DLL的位置”。

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

4)确保dll不处于调试模式,因为它需要机器中的微软调试运行时库(如果有的话)(我已经做了好几次)。如果依赖关系存在问题,路径助手应该帮助您确定依赖关系问题。

+0

1)我的文件是mylib.dll 2)我已经做到了! 3)我在Windows上使用它,在两台PC上使用相同的Java版本。和dll被编译为64位 – user2071938

+0

它说:“java.lang.UnsatisfiedLinkError:D:\ path \ to \ lib \ mylib.dll:无法找到从属库” 因为有正确的路径。它发现我的Dll在路径中,但这个DLL的依赖关系是问题,对吧? – user2071938

+1

确保dll不处于调试模式,因为它需要机器中的微软调试运行时库(如果有的话)(我已将它穹顶了好几次)。如果依赖关系存在问题,路径助手应该帮助您确定依赖关系问题。 – Thiyagarajan