Я работаю над проектом Java, который использует JNI. JNI вызывает пользовательскую библиотеку, которую я написал сам, скажем, mylib.dll, которая зависит от сторонней библиотеки libsndfile-1.dll.
Когда я запускаю свою программу, она вылетает с
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
Я искал этот сайт (и другие) и попробовал несколько исправлений:
Я запустил dependency walker. DW выдал пару предупреждений - что две библиотеки, требуемые libsndfile, MPR.DLL и SHLWAPI.DLL, имеют «неразрешенный импорт», но в DW FAQ сказано, что эти предупреждения можно безопасно игнорировать.
Я исправил имена методов в mylib.dll, как было предложено здесь . Имена методов каким-то образом были искажены компилятором, но я добавил флаги компоновщика, и теперь имена методов dll в точности совпадают с именами в моем заголовочном файле jni.
Я помещаю все эти DLL в один и тот же каталог - в тот же каталог, что и вызывающий их .jar - чтобы убедиться, что они находятся в правильном ПУТИ.
Никаких кубиков.
Кто-нибудь знает, что происходит?
Я занимаюсь разработкой в Visual Studio 2010 на MacBook Pro (через Parallels). Тестирую в Windows XP на ноутбуке toshiba.