2012-02-22 142 views
0

我有一個MFC程序,即使我關閉程序它不會脫身,仍然顯示在任務管理器中。當我看到調用堆棧時,我看到一些dll文件只加載但未卸載。從MFC程序卸載dll文件

你退出程序時是否使所有的dll文件卸載?所以exe文件不會顯示在任務管理器中。

我已經宣佈了一些變量在類的頂部:

vtkPoints *newPts = vtkPoints::New(); 
vtkPoints *newPtsSuction = vtkPoints::New();  
CArray <double,double> ScalarValues_pressure; 
CArray <double,double> ScalarValues_suction; 
CArray <double,double> ScalarValues; 

,其值在另一個函數添加到他們,並直接在另一個函數中使用的變量。

+0

應用程序關閉時,操作系統會自動卸載DLL。你試圖以錯誤的方式解決這個問題。真正的問題是應用程序代碼中的某些內容妨礙了它的關閉。不可能在沒有看到代碼的情況下說出它是什麼。考慮更新你的問題。 – 2012-02-22 08:45:46

+0

感謝科迪格雷。我已經更新了這個問題。 – gishara 2012-02-22 09:07:34

回答

1

問題首先不是DLL卸載。您的應用程序凍結在一個死循環或否則無法正確完成終止。修好後,這些庫會自動卸載,並且進程將繼續,包括從任務列表中。

+0

謝謝羅馬。有沒有辦法在程序中檢查它? – gishara 2012-02-22 07:31:53

+1

線程堆棧 - 檢查你的應用程序正在做什麼以及它爲什麼不響應關閉請求而銷燬所有內容。您可能還想在「WM_CLOSE」和「WM_DESTROY」消息處理程序(例如頂層窗口中的「OnClose」,「OnDestroy」)中插入一個斷點,並逐步查看代碼,以查看可能卡住的位置。 – 2012-02-22 07:38:31