Я працюю над проектом 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 говорили, що ці попередження можна безпечно ігнорувати.
Я зафіксував імена методів у mylib.dll, як запропоновано тут . Імена методів якось зіпсував компілятор, але я додав прапори компонувальника, і імена методів dll тепер точно відповідають цим у моєму файлі заголовка jni.
Я помістив усі ці бібліотеки DLL в один каталог - той самий каталог, що і .jar, який їх викликає, - щоб переконатись, що вони знаходяться на правильному шляху.
Без кісток.
Хтось уявляє, що відбувається?
Я розробляю Visual Studio 2010 на MacBook pro (через Parallels). Я тестую в Windows XP на ноутбуці toshiba.