私が使用しようとしている:32ビットJVMの実行に(Visual Studioの2015年に建て)ます。java.lang.UnsatisfiedLinkError:ライブラリをロードできません(Visual Studioの2015ビルドで)
32ビットのDLLをアプリケーションは、Windows 7の64ビットマシン上で
64ビットのDLLのWindows 7 64ビットマシンで、64ビットのJVMで動作しているアプリケーション上(のVisual Studio 2015で構築された)
DLLが持っています提供されるものは少ない私はjna.library.pathをすべての必要な依存関係を含むフォルダに設定しているので、jnaはそれらを見つけることができるはずです。また、DLLとその依存関係を含むフォルダを 'java.library.path'に追加して、それらが見つかったことを確認しました。
私はライブラリを含むディレクトリから自分のアプリケーションを起動した場合、それは何の問題もなく動作します。どちらの場合も
は、残念ながら、私は考慮すべき
java.lang.UnsatisfiedLinkError: Unable to load library.
他のいくつかのポイントを獲得します。 これは、読み込みのDLL検索パスに問題があることを示していますか?
私は以前にVisual Studio 2010でライブラリを構築していましたが、問題なくライブラリをロードできました。 これはDLLのビルドに問題がありますか?
何が問題なのでしょうか?
私は 'jna.debug_load'と 'jna.debug_load.jna'を有効にしていますが、ログには正しいパスが試されてもロードは失敗していることが示されます(私は両方のシナリオで正しいlib C:\ path \ to \ my \ lib [32/64] \ xxx.dll)から入手できます。次のログは32ビットのDLLのロード用ですが、64ビットの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...
*これは、DLL検索パスに問題があることを示していますか?*はい。そのフォルダを['java.library.path']に追加してください(http://stackoverflow.com/a/1734214/2970947)。 –
私はあなたに同意する傾向がありますが、説明の中のその詳細は忘れていました。DLLと依存関係を含むフォルダは、 'jna.library.path'と 'java.library.path'の両方の先頭に連結されています。それでも、それは動作しません。私は何か他のものを逃すことができますか? –
そのフォルダをあなたの 'PATH'に追加しようとすると、WoW32とリンカで何か起こっているかもしれません(しかし、私は何が何か分かりません)。 –