我们有一个针对 MFC9 (VC2008) 构建的应用程序。该应用程序是一个 SDI 应用程序,并在 InitInstance() 期间显示一个文件打开对话框。显示该对话框会导致加载 comdlg32.dll。几分钟后,comdlg32.dll 会自动卸载。在此之后,依赖于 DLL 的下一个函数将崩溃。
如何避免这种情况?什么控制着 DLL 的自动卸载/加载?
更多信息:
- 我们在相同应用程序的 WinXP 上看不到这个问题。
- 在 Win7 上,这种行为是从今年年初才出现的——也许某些 MFC 更新与此有关?
- 小型测试应用程序不会出现问题行为 - comdlg32.dll 在需要时重新加载。
- 我们发现 Microsoft 声明不建议在 MDI 应用程序的 InitInstance() 中使用模式对话框 (http://support.microsoft.com/kb/173261) - 不过我们有一个 SDI 应用程序。
- 我们不以任何方式直接使用 comdlg32.dll,只是通过 MFC 间接使用。