MFC9 (VC2008) に対して構築されたアプリケーションがあります。アプリケーションは SDI アプリケーションであり、InitInstance() 中にファイルを開くダイアログを表示します。そのダイアログを表示すると、comdlg32.dll が読み込まれます。数分後、comdlg32.dll が自動的にアンロードされます。この後、DLL に依存する次の関数がクラッシュします。
どうすればこれを回避できますか? DLL の自動アンロード/ロードを制御するものは何ですか?
詳細情報:
- 同じアプリケーションを使用する WinXP では、この問題は発生しません。
- Win7 では、この動作は今年の初めから発生しただけです。MFC の更新がこれに関連している可能性がありますか?
- 小さなテスト アプリケーションでは、問題のある動作は見られません。必要に応じて comdlg32.dll が再ロードされます。
- MDI アプリケーション (http://support.microsoft.com/kb/173261) の InitInstance() でモーダル ダイアログを使用することは推奨されないという Microsoft の声明を見つけました。ただし、SDI アプリケーションはあります。
- comdlg32.dll を直接使用することはなく、MFC を介して間接的にのみ使用します。