1 つの dll を作成し、Java プログラムで使用しました。
Windows XP と Windows 7 では正常に動作していますが、Windows Vista で同じプログラムを使用すると、Unsatisfied Link エラーが発生します。
System.loadlibrary() が Vista で動作しないことを知りました (これを参照)。
System.loadlibrary() の代替方法を提案してください。
3 に答える
System.loadlibrary() は Vista で正常に動作します。問題は、DLL またはその依存関係の 1 つが見つからないことです。ほとんどの場合、適切な MSVC ランタイムをインストールする必要があります。他のアプリが既にランタイムをインストールしているため、一部のマシンでこれを行わずに済む場合があります。
ネイティブ コード コンパイラのドキュメントからこれを解決できない場合は、プロファイル モードで Dependency Viewer を使用して System.loadlibrary エラーをデバッグすることをお勧めします。
System.Loadlibrary は Vista で正常に動作します。リンクは、LoadLibrary 自体ではなく、特定のライブラリの問題を示しています。LoadLibrary の代わりに、System.Load を使用して絶対パスを指定できます (少なくともこれにより、ライブラリをロードできるかどうかがわかります)。
Dependency Walker (http://www.dependencywalker.com/) のようなツールを使用して、DLL から「呼び出された」ライブラリを確認したいと思います。
このアプリは、パスに欠落している DLL がある場合に通知できます。Java プログラムを起動する前に、シェル変数 PATH を確認することもできます。
それが役に立てば幸い。