Ich arbeite an einem Java-Projekt, das das JNI verwendet. Das JNI ruft eine benutzerdefinierte Bibliothek auf, die ich selbst geschrieben habe, sagen wir mylib.dll, und das hängt von einer Bibliothek eines Drittanbieters ab, libsndfile-1.dll.
Wenn ich mein Programm starte, stürzt es mit ab
java.lang.UnsatisfiedLinkError: C:\...path...\mylib.dll: Can't find dependent libraries.
Ich habe diese Site (und andere) durchsucht und eine Reihe von Korrekturen versucht:
Ich lief Dependency Walker. DW gab einige Warnungen aus - dass zwei von libsndfile benötigte Bibliotheken, MPR.DLL und SHLWAPI.DLL, "ungelöste Importe" hatten -, aber die DW-FAQ besagten, dass diese Warnungen sicher ignoriert werden könnten.
Ich habe die Methodennamen in mylib.dll korrigiert, wie hier vorgeschlagen . Die Methodennamen wurden vom Compiler irgendwie entstellt, aber ich habe Linker-Flags hinzugefügt und die Namen der DLL-Methoden stimmen jetzt genau mit denen in meiner JNI-Header-Datei überein.
Ich habe alle diese DLLs in dasselbe Verzeichnis gestellt - dasselbe Verzeichnis wie die .jar, die sie aufruft -, um sicherzustellen, dass sie sich auf dem richtigen Pfad befinden.
Kein Würfel.
Hat jemand eine Idee was los ist?
Ich mache meine Entwicklung in Visual Studio 2010 auf einem MacBook Pro (über Parallels). Ich teste in Windows XP auf einem Toshiba-Laptop.