3

アンマネージド アセンブリを呼び出すマネージド (C#) アプリで次の例外が発生します。

Caught:System.IO.FileLoadException 'ダイナミック リンク ライブラリ (DLL) の初期化ルーチンが失敗しました。(HRESULT からの例外: 0x8007045A)'

この HRESULT の意味と、これを診断するにはどこから始めればよいでしょうか?

4

4 に答える 4

4

VS 2008 にあり、.NET フレームワーク v2.0 を対象とするプロジェクトを持つソリューションをターゲット ランタイム v 4.0 の VS 2010 にアップグレードした後、このエラーが発生しました。私が得ていた例外は次のとおりです。

ファイルまたはアセンブリ 'XYZ.dll' またはその依存関係の 1 つを読み込めませんでした。ダイナミック リンク ライブラリ (DLL) の初期化ルーチンが失敗しました。(HRESULT からの例外: 0x8007045A)":"XYZ.dll

これは、スタートアップとして設定されたプロジェクトの App.config ファイルに次のセクションを追加することで修正されました。

<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v2.0"/>
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
于 2011-09-19T10:17:53.460 に答える
3

FileLoadExceptionクラス

アセンブリファイルが見つかったがロードできない場合に発生するエラーを表します。

FileNotFoundException例外は、ファイルが見つからないためにファイルのロードに失敗した場合にスローされます。ファイルが見つかったが、権限が不十分なためにロードできない場合、SecurityExceptionがスローされます。

FileLoadExceptionのデフォルトのHRESULTはCOR_E_FILELOADで、値は0x80131621ですが、可能なHRESULTはこれだけではありません。

コードにPathDiscovery権限がない場合、この例外のエラーメッセージには、完全修飾パスではなく、ファイル名またはディレクトリ名のみが含まれる場合があります。

MSDNから直接引用:
リンクテキスト

これは通常、必要なライブラリを見つけることができるという単純な問題です。

于 2009-11-17T10:45:37.300 に答える
2

または、ロードしようとしている DLL が見つからない DLL をロードしようとしています。DLL のDEPENDS.EXEを確認してください。

于 2009-11-17T11:12:57.793 に答える