2012-02-22 11 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は、アプリケーションが終了するとオペレーティングシステムによって自動的にアンロードされます。あなたは間違った方法でこの問題を解決しようとしています。本当の問題は、アプリケーションのコード内で、それが閉じられないようにすることです。コードを見ずに何が言えるのかは、不可能です。あなたの質問の更新を検討してください。 –

+0

ありがとうコーディグレー。私は質問を更新しました。 – gishara

答えて

1

最初の問題はDLLのアンロードではありません。あなたのアプリケーションは、一種のデッドループでフリーズするか、そうでなければ適切に終了を完了しません。これを修正すると、ライブラリが自動的にアンロードされ、タスクリストからのプロセスも実行されます。

+0

ローマに感謝します。プログラムで確認する方法はありますか? – gishara

+1

スレッドスタック - アプリケーションが何をしているのか、要求をクローズすることに応答してすべてを破壊しない理由を確認します。また、 'WM_CLOSE'と' WM_DESTROY'メッセージハンドラ(トップレベルウィンドウの 'OnClose'や' OnDestroy'など)にブレークポイントを設定し、そこからコードをステップ実行して、どこに行き詰まっているのかを確認することもできます。 –

関連する問題