1

を使用して他の dll を動的にロードする C# アプリケーションがありますAssembly.LoadFrom。dll が MFC をサポートするマネージ cpp であり、そのような .dll が含まれている場合、このメソッドは失敗しますafxwin.h

この動作を再現するには、ウィザードを使用して新しいマネージ cpp dll を作成するだけです。MFC サポート フラグを構成に追加します。stdafx.hファイルにMFC 標準インクルードを何も配置しないAssembly.LoadFrom限り、失敗しません。ファイル#include "afxwin.h"を入れたら失敗!(つまり、dll は空です!)stdafx.hAssembly.LoadFrom

手がかりはありますか?

ありがとう、キャビ

4

1 に答える 1

1

Visual Studio 2010 で説明したようにやってみました。

プロジェクト設定を [MFC を共有 DLL として使用する] に設定し、stdafx.h に afxwin.h を含めました。AfxMessageBox() の呼び出しに成功しました。したがって、MFC を使用しているという事実ではありません。別のものでなければなりません。

MFC を共有 DLL として使用していると思いますか? また、完全な例外の詳細を記入してください。プロセス モニター ( http://technet.microsoft.com/en-us/sysinternals/bb896645 ) を使用して、アプリが読み込もうとしている DLL を確認します。おそらく、欠落している可能性のある DLL (MFC ランタイムなど) が明らかになるでしょう。Dependency Walker (depends.exe) を使用して、混合モード ライブラリが参照している DLL を確認します。

また、boost::thread を静的にリンクして使用すると、混合モード アセンブリの読み込みが失敗します。

于 2013-06-13T23:09:14.503 に答える