1

System.loadLibrary() を使用して、実行時に指定したフォルダーからいくつかの DLL をロードする Java アプリケーションがあります。アプリケーションは、フォルダー内で見つかった DLL を 1 つを除いてすべて正常に読み込みます。ロードに失敗した場合は、次のエラーが報告されます。

C:\myapp\lib\foo.dll: 依存ライブラリが見つかりません

DependencyWalker で foo.dll を開きましたが、問題は報告されません (IESHIMS.DLL と WER.DLL が見つからないと表示されますが、これらは警告であり、私が知る限り、これらは無視できます)。依存関係ツリーには、WSOCK32.DLL、KERNEL32.DLL、および lib フォルダーに含まれる (そして正常にロードされる) 他の 1 つのアプリケーション固有の DLL がリストされます。

私の最善の推測は、foo.dll が、私の lib フォルダーに存在しない別の DLL に依存しているということですが、この依存関係に関する詳細情報を取得する方法がわかりません。誰でもこれをデバッグする方法を提案できますか?

4

2 に答える 2

0

Dependency Walkerにはプロファイル モードがあります。これを使用して、最終的にロードに失敗するモジュールを確認します。一部のモジュールはファイル名のさまざまな接頭辞と接尾辞を試すことによって一致するため、最終的に見つかったいくつかのエラーが表示される可能性があります。

実行可能ファイル (javaw.exe など) と一致する 32 ビットまたは 64 ビット バージョンを使用してください。

DLL 検索パスを理解するには、MSDNのドキュメントを参照してください。

于 2013-07-03T15:39:25.630 に答える