2017-01-31 1 views
0

Ich habe ein Projekt, das aus einer DLL und einer Windows-Konsolenanwendung .exe besteht.AFX_MANAGE_STATE (AfxGetStaticModuleState()) in DLL Ursachen EXE nicht beenden?

Die .exe ruft die DLL auf. In der DLL erstelle ich ein Dialogfeld.

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

Ich hatte AFX_MANAGE_STATE (AfxGetStaticModuleState()), so wusste es aussehen in der DLL für die Ressourcen hinzuzufügen. Dies scheint jedoch ein Problem zu verursachen, wenn die Steuerung an die EXE zurückgegeben wird.

Wenn ich "0" in der main() - Funktion der EXE zurückgibt, verschwindet das Konsolenfenster nicht. Ich muss es physisch schließen, damit die EXE nicht mehr läuft. Wenn ich AFX_MANAGE_STATE (AfxGetStaticModuleState()) aus der DLL entferne (zusammen mit allen Verweisen auf MyDlg, da sie ohne sie nicht funktionieren), funktioniert alles gut, wenn die Kontrolle an die EXE zurückgegeben wird.

Warum würde das passieren?

+2

Verbinden Sie einen Debugger und sehen Sie, was verhindert, dass der Prozess beendet wird. –

+0

Korrigiert. Meine DLL verwendet DAO. Ich musste AfxDaoTerm() hinzufügen; vor dem Beenden. Vielen Dank. –

+0

Bitte posten Sie dies als Antwort, damit andere mit dem gleichen Problem wissen, wie es zu beheben ist. –

Antwort

0

Fest. Meine DLL verwendet DAO. Ich musste AfxDaoTerm() hinzufügen; vor dem Beenden. Vielen Dank

Verwandte Themen