说实话题目不太清楚,但是我总有个问题,看了很多资料但是还不明了,总感觉有个答案在眼前了,但是怎么抓都抓不到。而且问题也不是一两句话能说清楚的,但是这些问题都有一个中心
1.比如说我在VC中建立一个WIN32工程,我包含一个 stdio.h的头文件,然后在WinMain 函数里写一个printf函数,编译成功,但是运行后没反应,为什么?还有这个函数的代码是放到EXE文件的PE部分还是DOS部分?
2.还是在VC里,建立一个控制台程序,然后包含windows.h头文件,然后在main函数里面建立一个windows窗口,这个没试过不知道能不能通过,但是我看一本书叫《编程高手箴言》的书里面也用这种方法建立了一个windows程序不知道是怎么回事,按我的理解dos下main函数的代码应该都是写到EXE文件的dos部分而非PE部分,怎么能建立windows窗口的?
3.2中的这个程序我在TC2.0中编译又会怎样?为什么?
4.就在我刚才说的那本叫《编程高手箴言》的书里面写了这么一句话“不要被main函数迷惑了,其实别的名字也是可以的,比如说mymain",这我就有点搞不懂了,为什么主函数也可以是别的名字的?前面的我没看懂,不知道这句话之前还有什么条件。
请各位大大为我解答,小弟谢过
1.比如说我在VC中建立一个WIN32工程,我包含一个 stdio.h的头文件,然后在WinMain 函数里写一个printf函数,编译成功,但是运行后没反应,为什么?还有这个函数的代码是放到EXE文件的PE部分还是DOS部分?
2.还是在VC里,建立一个控制台程序,然后包含windows.h头文件,然后在main函数里面建立一个windows窗口,这个没试过不知道能不能通过,但是我看一本书叫《编程高手箴言》的书里面也用这种方法建立了一个windows程序不知道是怎么回事,按我的理解dos下main函数的代码应该都是写到EXE文件的dos部分而非PE部分,怎么能建立windows窗口的?
3.2中的这个程序我在TC2.0中编译又会怎样?为什么?
4.就在我刚才说的那本叫《编程高手箴言》的书里面写了这么一句话“不要被main函数迷惑了,其实别的名字也是可以的,比如说mymain",这我就有点搞不懂了,为什么主函数也可以是别的名字的?前面的我没看懂,不知道这句话之前还有什么条件。
请各位大大为我解答,小弟谢过
解决方案 »
- 子对话框的问题
- VC6.0 程序向studio 2008 移植
- 写了一个IOCP的网络库感觉还可以现在在测试阶段。同时也放点分
- 急!!!!请教怎样在文本文件中的指定位置使用二进制图像数据替换特定的字符串??
- 从CDilog中继承下来的类系统都自动生成enum {IDD=IDD_DIALOG1};可是当编译时出现"IDD_DIALOG1未定义"时该如何修改?
- 关于类virtual~的问题
- HELP---谁有窗口出现的效果?最好有源代码。谢谢。也可以讨论哟。
- vs2012使用ArcEngine会出很多问题吗?
- vc加载含safearray数组dll问题
- 如何判断文件的结尾呢?
- 菜单类类名是#32768,别的类名去哪儿找?
- 做了一个月都搞不出一个按钮的颜色!急!!!
你学一下汇编,好多细节得东西就会呈现在你眼前。
http://baike.baidu.com/view/1087038.htm,你说的DOS部分可能是指里面的IMAGE_DOS_HEADER结构
记住这一点:DOS部分是老版本操作系统遗留下来的,仅为了兼容而已
我们的MAIN函数代码是放在不同的代码段(即PE节)
2.不会放那个dos stub头,都是PE的代码段里;
3.~
4.默认情况下,模块的ENTRY是mainCRTStartup,winmainCRTStartup或DLLmainCRTStartup,他们会再去调用你的main或者WinMain,可以改变link选择指定的函数作为ENTRY,但是一般都不这么做,xxCRTStartup完成了C/C++ 库的初始化工作,包括静态类对象的构造和析构,用你的函数作为ENTRY这些静态的类对象将得不到构造和析构