Behebung von UnsatisfiedLinkError: Abhängige Bibliotheken in JNI-Projekten können nicht gefunden werden
Bei der Entwicklung von Java Native Interface (JNI)-Projekten kann es zu Problemen kommen Fehler: „java.lang.UnsatisfiedLinkError: C:...path...mylib.dll: Abhängige Bibliotheken können nicht gefunden werden.“ Dieser Fehler weist darauf hin, dass die Java Virtual Machine (JVM) die von Ihrer JNI-Bibliothek benötigten gemeinsam genutzten Bibliotheken (DLLs) nicht finden kann.
Behebung des Problems
Um das Problem zu beheben , ziehen Sie die folgenden Lösungen in Betracht:
-
Stellen Sie den richtigen Bibliothekspfad sicher: Stellen Sie sicher, dass sich die abhängigen Bibliotheken (z. B. libsndfile-1.dll) im selben Verzeichnis wie die Hauptbibliothek befinden ( mylib.dll) oder in einem Verzeichnis, das in der Windows-Umgebungsvariablen PATH aufgeführt ist. Die JVM verlässt sich auf diesen Bibliothekspfad, um die erforderlichen Abhängigkeiten zu finden.
-
Mangling von Methodennamen beheben: Überprüfen Sie noch einmal, ob die Methodennamen in der JNI-Bibliothek genau mit denen im entsprechenden JNI-Header übereinstimmen Datei. Visual Studio-Compiler können Methodennamen verfälschen. Stellen Sie daher sicher, dass Sie die entsprechenden Linker-Flags angeben, um eine konsistente Benennung zu generieren.
-
Bibliothekspfad explizit angeben: Wenn die vorherigen Methoden fehlschlagen, können Sie Java explizit festlegen .library.path-Systemeigenschaft in das Verzeichnis mit den abhängigen Bibliotheken. Dies überschreibt den Standardsuchpfad für die Bibliothek.
In Visual Studio 2010 unter macOS sollte die Zielplattform auf Windows eingestellt sein, da Sie unter Windows XP testen. Wenn die Entwicklung unter Windows erfolgt, legen Sie die Zielplattform entsprechend fest.
Zusätzliche Tipps
Weitere Informationen finden Sie im „The JNI Book“ oder in der Oracle HTML-Version von JNI-Spezifikation. Sie können auch den Befehl „java -XshowSettings:properties -version“ verwenden, um den Suchpfad der gemeinsam genutzten Bibliothek zu identifizieren.
Das obige ist der detaillierte Inhalt vonWarum kann mein JNI-Projekt keine abhängigen Bibliotheken finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn