JNI プロジェクトの UnsatisfiedLinkError の解決: 依存ライブラリが見つからない
JNI プロジェクトで、「依存ライブラリが見つかりません」というメッセージを含む UnsatisfiedLinkError が発生する「mylib.dll などのカスタム ライブラリが、システム検索パスで利用できないサードパーティ ライブラリ (libsndfile-1.dll など) に依存している場合に発生する可能性があります。」この問題を解決するには、いくつかの重要な手順に従う必要があります。
-
正しい DLL 配置を確認します。 カスタム DLL (mylib.dll) と必要な依存関係 (libsndfile-) の両方を配置します。 1.dll) を Java アプリケーションの JAR ファイルと同じディレクトリに配置します。
-
DLL 関数の名前の確認: カスタム DLL 内の関数名が JNI ヘッダーで定義されている関数名と正確に一致することを確認します。ファイル。必要に応じて、ビルド プロセスでリンカー フラグを調整して、正しいメソッド名が付けられるようにします。
-
Windows 固有の動作を考慮する: Windows では、java.library.path システム プロパティが明示的に指定されていない場合、設定する場合、DLL は現在の作業ディレクトリ、または Windows PATH 環境変数に含まれるディレクトリに存在する必要があります。
追加のトラブルシューティングのヒント:
- 依存関係ウォーカーの警告を確認する: 依存関係ウォーカーで MPR.DLL および SHLWAPI.DLL の未解決のインポートが表示されても、DW FAQ で説明されているように、これらの警告は多くの場合無視できます。
-
共有ライブラリの検索パスを確認します: コマンド「java -XshowSettings:properties -version」(Java 8 以降で使用可能) を使用して、共有ライブラリの検索パスを表示し、必要な DLL にアクセスできることを確認します。
-
クラスパスの問題を解決する: クラスパスと共有ライブラリの検索パスは別のものであり、関連性はありません。必要なすべての JAR ファイルがクラスパスに正しく含まれていることを確認してください。
これらの手順に注意深く従うことで、開発者は JNI プロジェクト内の依存ライブラリの不足に関連する UnsatisfiedLinkErrors を解決でき、アプリケーションをスムーズに実行できるようになります。
以上がJNI プロジェクトで「UnsatisfiedLinkError: Can't Find dependend libraries」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。