Win32 API 中的 WinMain() 在哪里实现?

Where is WinMain() in Win32 API implemented?

只是想知道 Win32 API 中的 WinMain() 方法在哪里实现。 我知道 WinMain() 是在 WinBase.h 中声明的,但是当应用程序运行时,它在哪里引用 WinMain() 函数的主体?

要实现就看程序编写者了。类似于在非 Windows 环境中实现 main() 的要求。

WinMain 的文档解释了它是什么:

The user-provided entry point for a graphical Windows-based application.

在SDK中声明,但需要程序作者实现

创建新进程时,OS 调用可执行映像的导出入口点。默认情况下,这是 C 运行时 (CRT) 的入口点 (WinMainCRTStartup),它在将控制转移到用户提供的入口点 WinMain 之前准备执行环境。这是执行的第一个用户编写的代码。


您可以在 WinMain is just the conventional name for the Win32 process entry point.

上找到有关在 Windows 上启动可执行文件时发生的情况的更多信息

还有一个 CppCon 2018 演讲 Matt Godbolt titled The Bits Between the Bits: How We Get to main(),详细解释了在执行第一行用户编写的代码之前发生了什么。它特定于 Linux,但原则也适用于 Windows。