是否可以从常规main调用WinMain ?

Is it possible to call WinMain from regular main?

本文关键字:调用 WinMain main 常规 是否      更新时间:2023-10-16

特别是,有没有一种方法可以创建一个windows应用程序,而不直接指定它与'新建项目'向导?显然,仅仅包括"windows.h"并不会自动创建一个main函数,所以如果我想"从头开始"创建一个windows应用程序,我该怎么做呢?

程序启动时,调用start_start函数。该函数的定义包含在通常自动链接的库中。在一个标准的C程序中,它会做一些启动的事情,然后调用你的main函数。

这是在标准 C程序中发生的事情,但是您可以使用WinMain代替,这不是标准的。如果main不存在,但WinMain存在,它将使用适当的参数调用WinMain

因此,不需要有main函数;WinMainmain更适合这个目的。

icktofay的回答基本上是正确的,除了一个部分:

这是在标准C程序中发生的事情,但您可以使用WinMain代替,这不是标准的。如果main不存在,但WinMain存在,它将使用适当的参数调用WinMain

决定应用程序的次要入口点(start_start调用的函数是什么)的因素是哪个子系统被指定给链接器。

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