我使用JNI将本机C ++库链接到我的Java应用程序。我使用System.loadLibrary()加载了我的库,一切似乎都在工作。我将功能添加到我的C ++ DLL中,现在它正在调用来自第三方软件系统的多个其他dll。不幸的是,其中一个dll被命名为ZIP.dll。 java loadLibrary操作在查找我的项目目录之前在/ jre / bin中找到这个依赖的dll,因此它尝试使用那个。这两个dll不完全相同,所以我得到一个UnsatisfiedLinkError,说无法找到指定的过程。
有没有办法告诉java在加载dll时在哪里查找依赖库?
答案 0 :(得分:2)
我相信使用完整路径名而不是System.load
的{{1}}应该可以解决问题。
答案 1 :(得分:0)
我认为不可能同时加载两个具有相同名称的不同DLL。您可以更改路径上的顺序,以便首先加载正确的ZIP.dll(这可能会导致jvm出现问题),或者您可以将ZIP.dll文件重命名为其他内容。重命名您的ZIP.dll可能是最简单的方法。