我正在开发一个使用 JNI 的 Java 项目。JNI 调用我自己编写的自定义库,比如说 mylib.dll,它依赖于第 3 方库 libsndfile-1.dll。
当我运行我的程序时,它崩溃了
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
我搜索了这个网站(和其他网站),并尝试了一些修复:
我跑了依赖步行者。DW 给出了几个警告——libsndfile 所需的两个库 MPR.DLL 和 SHLWAPI.DLL 有“未解析的导入”——但DW 常见问题解答说可以安全地忽略这些警告。
我按照这里的建议修复了 mylib.dll 中的方法名称。方法名称不知何故被编译器弄乱了,但是我添加了链接器标志,并且 dll 方法名称现在与我的 jni 头文件中的名称完全匹配。
我将所有这些 DLL 放在同一个目录中——与调用它们的 .jar 相同的目录——以确保它们位于正确的 PATH 上。
没有骰子。
有谁知道发生了什么?
我正在 MacBook pro(通过 Parallels)上使用 Visual Studio 2010 进行开发。我正在东芝笔记本电脑上的 Windows XP 中进行测试。