Pracuję nad projektem Java, który używa JNI. JNI wywołuje bibliotekę niestandardową, którą sam napisałem, powiedzmy mylib.dll, która zależy od biblioteki innej firmy, libsndfile-1.dll.
Kiedy uruchamiam program, ulega awarii z
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
Przeszukałem tę witrynę (i inne) i wypróbowałem kilka poprawek:
Pobiegłem chodzik dla uzależnień. DW przekazał kilka ostrzeżeń - że dwie biblioteki wymagane przez libsndfile, MPR.DLL i SHLWAPI.DLL, mają „nierozwiązane importy” - ale DW FAQ powiedział, że te ostrzeżenia można bezpiecznie zignorować.
Poprawiłem nazwy metod w mylib.dll, zgodnie z sugestią tutaj . Nazwy metod zostały w jakiś sposób zniekształcone przez kompilator, ale dodałem flagi konsolidatora i nazwy metod dll są teraz dokładnie zgodne z tymi w moim pliku nagłówkowym jni.
Umieściłem wszystkie te biblioteki DLL w tym samym katalogu - tym samym katalogu, co plik .jar, który je wywołuje - aby upewnić się, że znajdują się na właściwej ścieżce.
Nie ma kości.
Czy ktoś ma pojęcie o co chodzi?
Programuję w Visual Studio 2010 na MacBooku Pro (przez Parallels). Przeprowadzam testy w systemie Windows XP na laptopie Toshiba.