Ich versuche laden, zu verwenden:java.lang.UnsatisfiedLinkError: Kann Bibliothek (mit Visual Studio 2015 build)
32-Bit-DLL auf einem laufenden 32-Bit-JVM (mit Visual Studio 2015 gebaut) Anwendung auf einem Windows 7 64-Bit-Maschine
64-Bit-DLL (mit Visual Studio 2015) auf einer 64-Bit-JVM laufende Anwendung auf einem Windows 7 64-Bit-Maschine
Die DLL hat eine wenige zur Verfügung gestellt abhängen encies, aber ich habe 'jna.library.path' in dem Ordner eingerichtet, der alle erforderlichen Abhängigkeiten enthält, damit jna sie finden kann. Ich habe auch den Ordner, der die DLL und ihre Abhängigkeiten enthält, zu 'java.library.path' hinzugefügt, um sicherzustellen, dass sie gefunden werden.
In beiden Fällen leider bekomme ich die
java.lang.UnsatisfiedLinkError: Unable to load library.
Einige andere Punkte zu beachten:
Wenn ich meine Anwendung aus dem Verzeichnis mit den Bibliotheken starten, läuft es ohne Probleme . Bedeutet dies ein Problem mit dem DLL-Suchpfad zum Laden?
Ich erstellte zuvor die Bibliothek mit Visual Studio 2010, und ich konnte die Bibliotheken ohne ein Problem laden. Könnte dies ein Problem mit dem DLL-Build sein?
Irgendwelche Ideen zu was könnte das Problem sein?
Ich habe "jna.debug_load" und "jna.debug_load.jna" aktiviert und das Protokoll zeigt, dass der richtige Pfad versucht wird, aber der Ladevorgang immer noch fehlschlägt (ich habe überprüft und überprüft, dass in beiden Szenarien die richtige lib ist verfügbar unter C: \ Pfad \ zu \ my \ lib [32/64] \ xxx.dll). Das folgende Protokoll ist für das 32-Bit-DLL-Laden, aber genau das gleiche Ergebnis passiert mit dem 64-Bit-DLL.
...snip...
Trying (via loadLibrary) jnidispatch
Looking in classpath from ...[...] for x86/jnidispatch.dll
Found library resource at bundleresource://449.fwk22856250/com/sun/jna/win32-x86/jnidispatch.dll
Trying C:\...snip...\AppData\Local\Temp\jna--892366855\jna1523529206075569309.dll
Found jnidispatch at C:\...snip...\AppData\Local\Temp\jna--892366855\jna1523529206075569309.dll
Looking for library 'xxx'
Adding paths from jna.library.path: C:/path/to/my/lib32
Trying C:\path\to\my\lib32\xxx.dll
Adding system paths: []
Trying C:\path\to\my\lib32\xxx.dll
Looking for lib- prefix
Trying libxxx.dll
Looking in classpath from ...[...]
...
java.lang.UnsatisfiedLinkError: Unable to load library 'xxx': Native library (win32-x86/xxx.dll) not found in resource path...
...snip...
* Bedeutet dies ein Problem mit dem DLL-Suchpfad zum Laden? * Ja. Fügen Sie diesen Ordner zu Ihrem ['java.library.path'] hinzu (http://stackoverflow.com/a/1734214/2970947). –
Ich stimme eher mit Ihnen überein ... aber ich vermisste dieses Detail in der Beschreibung, der Ordner, der die DLL und die Abhängigkeiten enthielt, wurde an den Anfang von "jna.library.path" und "java.library.path" verkettet. Trotzdem funktioniert es nicht. Könnte ich etwas anderes verpassen? –
Versuchen Sie diesen Ordner zu Ihrem 'PATH' hinzuzufügen, da könnte etwas mit WoW32 und dem Linker passieren (aber ich bin mir nicht sicher was). –