请教“应用程序正常初始化失败”问题
我有一个用MFC编写的DLL,名为PTWSConFc.dll,在另外一个由可视化编程工具生成的C代码中调用,生成的执行文件为Main.exe。以前在WinNT和Win2K环境下运行没有出现过问题,现在在WinXP环境下使用时,Main.exe一启动就报两次“应用程序正常初始化(0xc0000005)失败。请单击“确定”,终止应用程序。”,然后退出。
我所进行的尝试包括:
(一)将所有源程序(包括PTWSConFc.dll的源代码和Main.exe的源代码)在WinXP下进行重新编译链接,异常现象依旧;
(二)对PTWSConFc.dll的源程序进行逐步分析,发现当在CPTWSConFcApp::InitInstance()中增加如下代码时,就会出现上述异常现象:
1> ::SetErrorMode(SEM_NOGPFAULTERRORBOX);
2>
3> COleObjectFactory::RegisterAll();
4>
5> m_pClientWnd = new CConClientWnd();
6> CString sWinName;
7> sWinName.Format("PTWS主站模块客户接口%lu",::GetCurrentThreadId());
8> ((CFrameWnd*)m_pClientWnd)->Create(NULL,sWinName);
9> m_pClientWnd->ShowWindow(SW_HIDE);
10>
11> return CWinApp::InitInstance();
而将其中的第8、9行去掉时上述异常现象消失。
(三)为进一步确定问题所在,我重新编写了PTWSConFc.dll的源程序,将绝大部分内容去除,只保留了DLL调用接口和CPTWSConFcApp::InitInstance()等必须的内容,异常现象依旧。
(四)在另外一个用VC6编写的MFC应用中也使用了PTWSConFc.dll,但是没有出现上述异常现象。