出错信息:
加载riched20.dll,程序Debug窗口就不动了。并且_tWinMain也无法进入。
'Test111.exe': Loaded 'C:\Windows\System32\riched20.dll', No symbols loaded.The program '[5812] Test111.exe: Native' has exited with code 0 (0x0).
1.在Test111的InitInstance打断点,无法进入。
2.在_tWinMain打断点还是无法进入。
不过此后发现.exe加载Dll的方法是先调用每一个Dll的InitInstance来初始化需加载的Dll,待所有的Dll都加载成功后,才调用
_tWinMain来启动主程序。
我然后挨个查找Test111.exe所依赖的Dll里面的初始化方法(对于MFC程序,就是InitInstance方法)。
但是哪里调用了这个InitInstance方法呢?
这你得找到C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\dllmodul.cpp里面有个
extern "C"
BOOL WINAPI InternalDllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
...
// 这里是以此初始化每个DLL的
CWinApp* pApp; pApp = AfxGetApp();
if (pApp != NULL && !pApp->InitInstance()) {
// ...
}
...
}
然后我就发现我的一个DLL没有返回。故此主程序的Debug窗口就死锁了。