2017-01-31 4 views
0

私は、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に返されたときに、すべて正常に動作します。

なぜこれが起こっていますか?

+2

デバッガを接続し、プロセスの終了を妨げているものを確認してください。 –

+0

固定。私のDLLはDAOを使用しています。私はAfxDaoTerm()を追加しなければならなかった。終了する前に。ありがとうございました。 –

+0

同じ問題を抱える他の人がそれを修正する方法を知るように、これを回答として投稿してください。 –

答えて

0

修正済み。私のDLLはDAOを使用しています。私はAfxDaoTerm()を追加しなければならなかった。終了する前に。ありがとうございました

関連する問題