1

1 つの dll を作成し、Java プログラムで使用しました。
Windows XP と Windows 7 では正常に動作していますが、Windows Vista で同じプログラムを使用すると、Unsatisfied Link エラーが発生します。
System.loadlibrary() が Vista で動作しないことを知りました (これを参照)。
System.loadlibrary() の代替方法を提案してください。

4

3 に答える 3

1

System.loadlibrary() は Vista で正常に動作します。問題は、DLL またはその依存関係の 1 つが見つからないことです。ほとんどの場合、適切な MSVC ランタイムをインストールする必要があります。他のアプリが既にランタイムをインストールしているため、一部のマシンでこれを行わずに済む場合があります。

ネイティブ コード コンパイラのドキュメントからこれを解決できない場合は、プロファイル モードで Dependency Viewer を使用して System.loadlibrary エラーをデバッグすることをお勧めします。

于 2012-04-13T07:06:31.217 に答える
1

System.Loadlibrary は Vista で正常に動作します。リンクは、LoadLibrary 自体ではなく、特定のライブラリの問題を示しています。LoadLibrary の代わりに、System.Load を使用して絶対パスを指定できます (少なくともこれにより、ライブラリをロードできるかどうかがわかります)。

于 2012-04-13T07:11:48.890 に答える
0

Dependency Walker (http://www.dependencywalker.com/) のようなツールを使用して、DLL から「呼び出された」ライブラリを確認したいと思います。

このアプリは、パスに欠落している DLL がある場合に通知できます。Java プログラムを起動する前に、シェル変数 PATH を確認することもできます。

それが役に立てば幸い。

于 2012-04-13T07:05:11.437 に答える