4

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

4

2 回答 2

5

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

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

因此,没有必要具有main功能;WinMain服务于这个目的,而不是main.

于 2013-05-29T03:59:05.860 回答
4

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

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

应用程序的辅助入口点(由startor调用的函数_start)是哪个子系统指定给链接器的决定因素。

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

于 2013-05-29T05:05:24.580 回答