关于不同的程序入口,main(), _tmain(),WinMain(),wmain()?
来源:互联网 发布:sql count group by 编辑:程序博客网 时间:2024/05/02 06:48
(1)mainCRTStartup(或wmainCRTStartup)
(2)WinMainCRTStartup(或 wWinMainCRTStartup) //使用/SUBSYSTEM:WINDOWS 的应用程序
(3)_DllMainCRTStartup
其中w开头的函数时unicode版本的,分割符‘//’后面的是入口点函数匹配的subsystem(msdn中查看subsystem)属性设置。
如果未指定 /DLL 或 /SUBSYSTEM (也就是subsystem选项)选项,则链接器将根据是否定义了 main 或WinMain 来选择子系统和入口点。 函数 main、WinMain 和 DllMain 是三种用户定义的入口点形式。
在默认情况下,如果你的程序中使用的是main()或_main()函数,这链接器会将你的使用(1)中的函数连接到你的exe中;如果你的函数是以WinWain()函数开始的则连接器使用(2)中的函数连接进exe中;如果我们写的是DLL程序这连接进DLL的是(3)中的函数。
先摘录一段msdn的解释如下:
When you link your image, you eitherexplicitly or implicitly specify an entry point that the operatingsystem will call into after loading the image. For a DLL, thedefault entry point isDllMainCRTStartup. For anEXE, it is WinMainCRTStartup.You can override the default with the /ENTRY linkeroption. The CRT provides an implementation forDllMainCRTStartup,WinMainCRTStartup, andwWinMainCRTStartup (the Unicode entry point for anEXE). These CRT-provided entry points callconstructors on global objects and initialize other datastructures
大家看到了吧,上面我用红色标志了吗,我们可以使用链接器的链接选择来设置我们的函数入口点,但是最好不要这样做,原因就是我用蓝色标志的地方,如果我们重新设置入口点函数,则必须要在入口点函数中自己写上有关的初始化工作,这样岂不麻烦,所有我们最好用默认的入口点函数。
修改入口点方法:proerties->Linker->Advanced->EntryPoint
如果函数与链接器的SubSystem的属性要一致的:
proerties->Linker->System->SubSystem
如果未指定 /DLL 或 /SUBSYSTEM 选项,则链接器将根据是否定义了 main 或 WinMain来选择子系统和入口点。 函数 main、WinMain 和 DllMain 是三种用户定义的入口点形式。
给出一篇博文,该博文讲的比较好:
http://tb.blog.csdn.net/TrackBack.aspx?PostId=455591
设有一个Win32下的可执行文件MyApp.exe,这是一个Win32应用程序,符合标准的PE格式。MyApp.exe的主要执行代码都集中在其源文件MyApp.cpp中,该文件第一个被执行的函数是WinMain。初学者会认为程序就是首先从这个WinMain函数开始执行,其实不然。
- 关于不同的程序入口,main(), _tmain(),WinMain(),wmain()?
- 关于不同的程序入口,main(), _tmain(),WinMain(),wmain()?
- 关于不同的程序入口,main(), _tmain(),WinMain(),wmain()?
- _tmain main wmain WinMain
- _tmain与main,winMain,wmain
- _tmain与main,winMain,wmain收藏
- main(),_tmain(),WinMain(),wmain()四个函数区别
- _tmain与main,winMain,wmain收藏
- 关于main和_tmain和wmain的区别
- Python3.1.2:wmain,main,_tmain的区别
- main(), _tmain(), wmain(), wWinMain(), _tWinMain()的区别
- main WinMain _tmain的区别
- _tmain(),wmain与main函数
- _tmain,main,wmain三者区别
- 主函数 main WinMain _tmain _tWinMain 的区别
- 主函数 main WinMain _tmain _tWinMain 的区别
- 主函数 main WinMain _tmain _tWinMain 的区别
- 主函数 main WinMain _tmain _tWinMain 的区别
- How to make an SDL window the child of another window in Win32
- C#好压命令行操作类
- AE开发时,自定义工具的OnKeyDown事件的激活
- Qt启动外部程序
- 最近做qqma.sinaapp.com的时候 用到一个淘宝的关键字抓取
- 关于不同的程序入口,main(), _tmain(),WinMain(),wmain()?
- 图像像素操作
- Ural1068
- 60-思考题(4)-将1到9 这九个数字分成若干个数,满足一定的算式
- 看到这样的报道我心凉了
- intel编译器:libc.lib和msvcrt.lib冲突?如何解决 2010-9-28 18:13
- Cannot set device tcp segmentation offload settings: Invalid argument
- udev mdev
- esclipse debug