4

アンマネージ ライブラリ (「A.dll」など) にリンクし、そのライブラリが別のライブラリ (「B.dll」) にリンクしているときに、B.dll が見つからない場合、読み込みに失敗したという実行時エラー メッセージが表示されます。 「B.dll」。

しかし、マネージ コードから 'A.dll' に P/Invoke を実行すると、次の形式の一般的な例外が発生します。

未処理の例外: System.DllNotFoundException: DLL 'A.dll' を読み込めません: 指定されたモジュールが見つかりませんでした。

マネージ コードから p/invoking するときに、ロードに失敗した特定のアンマネージ dll ファイルを特定するエラー メッセージを取得するにはどうすればよいですか?

4

4 に答える 4

4

LoadLibrary「A.dll」で(基礎となるWin32 API)が失敗した理由を特定するために使用できる特定のAPIはないと思います。DLL 読み込みエラーのトラブルシューティングには、 Dependency Walkerなどのツールを使用することをお勧めします。

于 2008-11-06T15:48:01.493 に答える
0

例外から回答を得ることはできませんが、Process Monitor を使用して (多くの作業を行うことで) 回答を得ることができます。この記事では、プロセス モニターのログをスキャンして特定の問題を見つける方法について説明し、ツールも含まれています。

http://tech.blinemedical.com/debug-could-not-load-file-or-assembly-or-one-of-its-dependencies/

于 2013-03-18T13:32:18.223 に答える
0

これを例外の形で取得する方法がわかりません。この問題に遭遇したとき、私は通常、depends.exe で DLL を開こうとします。DLL が現在の場所から単純にロードされた場合に存在する欠落している依存関係を報告するのは非常に良いことです。

于 2008-11-06T15:46:35.537 に答える
0

Fusion Log Viewer は、.NET アプリでのアセンブリの読み込みに関する問題をデバッグするための優れたツールです。

一般的なファイル読み込みの問題を特定するには、Process Monitor を使用できます。

于 2013-12-18T20:59:29.597 に答える