2017-01-31 7 views
0

У меня есть проект, который состоит из библиотеки DLL и приложения Windows .exe.AFX_MANAGE_STATE (AfxGetStaticModuleState()) в DLL заставляет EXE не выходить?

.exe вызывает DLL. В DLL я создаю диалоговое окно.

AFX_MANAGE_STATE(AfxGetStaticModuleState()); 
MyDlg* dlg = new MyDlg; 
dlg->Create(IDD_DIALOG1); 

мне пришлось добавить AFX_MANAGE_STATE (AfxGetStaticModuleState()), так что знал, что искать в DLL для ресурсов. Однако это, похоже, вызывает проблему, когда управление возвращается в EXE.

Когда я возвращаю 0 "в функции main() EXE, окно консоли не исчезает. Я должен физически закрыть его, чтобы EXE перестала работать. Если я удалю AFX_MANAGE_STATE (AfxGetStaticModuleState()) из DLL (вместе со всеми ссылками на MyDlg, так как они не будут работать без него), все отлично работает, когда управление передается обратно в EXE.

Зачем это происходит?

+2

Подключите отладчик и посмотрите, что мешает процессу выйти из системы. –

+0

Исправлено. В моей DLL используется DAO. Мне пришлось добавить AfxDaoTerm(); перед выходом. Спасибо. –

+0

Пожалуйста, разместите это как ответ, чтобы другие с той же проблемой знали, как это исправить. –

ответ

0

Исправлено. В моей DLL используется DAO. Мне пришлось добавить AfxDaoTerm(); перед выходом. Спасибо