2

を使用して C++/CLI 管理モードで EXE を作成するアセンブリを動的にロードしているときに、C++/CLI で例外に直面していますAssembly.Load。DLL アセンブリは正常にロードされますが、EXE アセンブリのロードに失敗し、次の例外が生成されます。

TestManager.dll で「System.IO.FileLoadException」タイプの未処理の例外が発生しました

ファイルまたはアセンブリ 'testAssembly、Version=1.0.3836.39802、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。fixups` (2 つ以上のセクションまたは TLS セクションを含む IAT) を使用して検証不能な実行可能ファイルを読み込もうとしています。

HRESULT からの例外: 0x80131019

TestManager.dll 自体はマネージ dll であり、CLI の別の CLR プロセスにロードされ、別のプロセスとして EXE アセンブリをロードしようとしますが、失敗して例外が生成されます。

これはおそらく、混合モードで遊んでいることが原因である可能性があります。

4

3 に答える 3

5

「混合モードの C++ EXE は、参照されたアセンブリとして読み込まれると、メモリ内で適切に再配置できません。これがランタイム エラーの原因です。」

この引用は、 Connectのこのバグに対する Microsoft の回答からのもので、Microsoft はこのバグを修正するつもりはないと説明しています (まれな状況では問題が多すぎます)。

于 2010-07-03T19:31:25.173 に答える
0

.NET でのプロセス間通信には名前付きパイプを使用する必要があると思います。Assembly.Load は EXE アセンブリでは機能しません。

于 2010-07-04T16:39:24.470 に答える