不设断点,直接F10调试程序,可以看到:
微软在MFC中是这样隐藏调用WinMain()的: 1.在TCHAR.H文件中定义了一个宏: #define _tWinMain WinMain 这样MFC源代码在编译的时候,_tWinMain就会被替换为WinMain(),这样操作系统就可以调用了。 2.在APPMODUL.CPP文件中,定义了_tWinMain() _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // call shared/exported WinMain return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); } 看见了吗?里面调用了AfxWinMain(),也就说MFC把对WinMain()的调用转化为对AfxWinMain()的调用,这更加说明,即使在MFC中,也没有什么其它神奇的方法能够跳过或换掉对WinMain()的调用。 3.在WINMAIN.CPP文件中,实现了AfxWinMain()。 AfxWinMain()才实际调用CWinApp->InitApplication()、CWinApp->->InitInstance()完成系统初始化。
那么我的工程没有包含APPMODUL.CPP为什么也会执行呢? 因为在编译时使用的是已经编译好的lib和dll啦 做一个类似的实现。这里用的还是封装main函数
http://www.iamaxiang.cn/wp-content/uploads/2016/12/2016120312114597.zip
源代码中没有一句话,但是程序执行了,并输出aaaa
