Я работаю над проектом Java, который использует JNI. 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, который их вызывает, - чтобы убедиться, что они находятся на правильном пути.
Без кубиков.
Кто-нибудь знает, что происходит?
Я занимаюсь разработкой в Visual Studio 2010 на MacBook Pro (через Parallels). Я провожу тестирование в Windows XP на ноутбуке Toshiba.