如何修复JNI项目中的UnsatisfiedLinkError(找不到依赖库)
我正在使用JNI的Java项目中。JNI调用了一个我自己编写的自定义库,比方说mylib.dll,它依赖于一个第三方库libsndfile-1.dll。
当我运行程序时,它崩溃
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
我搜索了该网站(和其他网站),并尝试了许多修复程序:
- 我跑了依赖沃克。DW发出了一些警告-libsndfile所需的两个库MPR.DLL和SHLWAPI.DLL具有“未解决的导入”-但DW FAQ表示可以安全地忽略这些警告。
- 我已按照此处的建议将方法名称固定在mylib.dll中。方法名称已经被编译器弄乱了,但是我添加了链接器标志,并且dll方法名称现在与我的jni头文件中的名称完全匹配。
- 我将所有这些DLL放在相同的目录中-与调用它们的.jar相同的目录中-以确保它们在正确的PATH上。
没有骰子。
有人知道发生了什么吗?
我正在使用MacBook Pro(通过Parallels)在Visual Studio 2010中进行开发。我正在使用东芝笔记本电脑在Windows XP中进行测试。
回答:
少在Java 8中(我没有检查早期版本),你可以执行以下操作:
java -XshowSettings:properties -version
查找共享库搜索路径。java.library.path在该输出中查找属性的值。
以上是 如何修复JNI项目中的UnsatisfiedLinkError(找不到依赖库) 的全部内容, 来源链接: utcz.com/qa/420422.html