特别是,有没有办法创建一个Windows应用程序,而无需使用“新项目”向导直接指定它?显然,简单地包含“windows.h”不会自动创建一个main函数,所以如果我想“从头开始”创建一个Windows应用程序,我将如何去做呢?
答案 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}入口点)而不是控制台应用程序(期望wWinMain
或main
入口点)。如果从Visual Studio构建,则可以在C ++项目属性的链接器设置中选择子系统。