私は、DLLとWindowsコンソールアプリケーション.exeで構成されるプロジェクトを持っています。DLL内のAFX_MANAGE_STATE(AfxGetStaticModuleState())により、EXEが終了しません。
.exeはDLLを呼び出します。 DLLで私はダイアログボックスを作成しています。
AFX_MANAGE_STATE(AfxGetStaticModuleState());
MyDlg* dlg = new MyDlg;
dlg->Create(IDD_DIALOG1);
私はAFX_MANAGE_STATE(AfxGetStaticModuleState())を追加する必要がありましたので、それは資源のためのDLLで見て知っていました。しかし、これは、コントロールがEXEに返されたときに問題を引き起こしているようです。
EXEのmain()関数で "return 0"を返すと、コンソールウィンドウが消えません。 EXEが実行を停止するには、物理的に閉じる必要があります。 DLLからAFX_MANAGE_STATE(AfxGetStaticModuleState())を削除すると、(MyDlgがなくても動作しないため、MyDlgへのすべての参照とともに)コントロールがEXEに返されたときに、すべて正常に動作します。
なぜこれが起こっていますか?
デバッガを接続し、プロセスの終了を妨げているものを確認してください。 –
固定。私のDLLはDAOを使用しています。私はAfxDaoTerm()を追加しなければならなかった。終了する前に。ありがとうございました。 –
同じ問題を抱える他の人がそれを修正する方法を知るように、これを回答として投稿してください。 –