是否可以从常规主要调用WinMain?

时间:2013-05-29 03:56:49

标签: c++ windows winapi

特别是,有没有办法创建一个Windows应用程序,而无需使用“新项目”向导直接指定它?显然,简单地包含“windows.h”不会自动创建一个main函数,所以如果我想“从头开始”创建一个Windows应用程序,我将如何去做呢?

2 个答案:

答案 0 :(得分:5)

程序启动时,会调用start_start函数。此函数的定义包含在通常自动链接的库中。在标准C程序中,它将执行一些启动操作,然后调用main函数。

这就是标准 C程序中发生的情况,但您可以使用WinMain代替,这不是标准的。如果main不存在但是WinMain,则会使用相应的参数调用WinMain

因此,没有必要具有main功能; WinMain用于此目的而不是main

答案 1 :(得分:4)

icktoofay的回答大多是正确的,除了一部分:

  

这就是标准C程序中发生的情况,但您可以使用WinMain代替,这不是标准的。如果main不存在但是WinMain,则会使用相应的参数调用WinMain

应用程序的辅助入口点(start_start调用的函数)的决定因素是链接器subsystem is specified

如果您手动构建,可以将/SUBSYSTEM开关添加到链接器命令行,以指定您正在构建Windows应用程序(期望WinMain或{{1}入口点)而不是控制台应用程序(期望wWinMainmain入口点)。如果从Visual Studio构建,则可以在C ++项目属性的链接器设置中选择子系统。