0

依存 DLL 内の欠落している DLL をキャッチするにはどうすればよいですか?

例: アプリケーションは DLL A をロードしています。

DLL A が DLL B をロードしています。

したがって、DLL B が利用できない場合、アプリケーションは次のように表示します: DLL A が見つかりません。

解決策を見つけることができるヒントはありますか?

現時点では、依存関係ウォーカーを使用してこの問題を解決していますが、DLL が見つからない場合に顧客が外部ツールを起動しないように、アプリケーション内に何かが必要です。

4

3 に答える 3

1

ここでの使用例が完全にはわかりませんが、「外部ツール」を起動する前にアプリケーションがLoadLibraryを呼び出して DLL が利用可能かどうかを確認し、失敗した場合は DLL が見つからないことを報告できませんか?

于 2011-05-06T18:32:29.593 に答える
0

IATを解析し、LoadLibrary で使用されるものと同様のアルゴリズムを実装して、dll が見つかるかどうかを確認できます。これを実装するための出発点はImageNtHeader です

于 2011-05-06T21:29:44.763 に答える
0

DLL を明示的にロードできます。依存関係が欠落している場合、エラー/例外が発生します。

おそらく、DLL 内のコードを静的にコンパイルして、問題を解決できますか?

「 DLL Hell 」と戦っている場合は、ファイル システムに DLL を配置して、必要な DLL を Windows がロードできるようにすることもできます。

于 2011-05-06T20:31:40.863 に答える