1

こんにちは、最も優秀な Stackoverflowians

Visual Studio 2008 チーム システムを使用して、

私は単純な機能を持つc ++ dll(mfc静的にリンクされた通常のdll)を持っています

extern "C" __declspec(dllexport) int MyExportedFunction( )
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState( ))

   CString tempString ;
....
}

C# アプリケーションから DLL への DLLImport は機能し、C# コードからデバッガーからこの関数内にステップ インできます。この CString のインスタンス化にヒットすると、アプリ全体がクラッシュし、デバッガーが表示します

「ステップできません。プロセスは終了しました。別の接続を試行する前に、プロセス リストを更新してください」

この問題を解決するために私が何をすべきかについて誰か提案がありますか?

よろしくバズ

4

1 に答える 1

1

MFC プログラムは、new と delete を管理する CWinApp オブジェクト インスタンス theApp を作成しました。

MFC 通常の DLL は独自の theApp オブジェクトを定義しますが、MFC 拡張 DLL は別のモジュールの「theApp」を使用します。

あなたのクラッシュは、欠落している/初期化されていない「theApp」と一致していると思います。この場合、メモリ割り当ては失敗し、CString はメモリ割り当てを使用します。

2 つの可能性:

  • .NET から MFC 拡張 DLL を呼び出します。(拡張 DLL は独自の theApp を提供しません)

  • theApp オブジェクトが正しく初期化されていない通常の MFC DLL を呼び出します。

于 2010-02-11T08:43:07.880 に答える