Где реализован WinMain () в Win32 API? - PullRequest
0 голосов
/ 07 апреля 2020

Было просто интересно узнать, где реализован метод WinMain() в Win32 API. Я знаю, что WinMain() объявлено в WinBase.h, но когда приложение запускается, где оно ссылается на WinMain() тело функции?

Ответы [ 2 ]

3 голосов
/ 07 апреля 2020

Это зависит от разработчика программы. Аналогично требованию реализовать main () в не Windows среде.

2 голосов
/ 07 апреля 2020

Документация для WinMain объясняет, что это такое:

Предоставленная пользователем точка входа для графического Windows приложения.

Он объявлен в SDK, но для его реализации требуется автор программы.

Когда создается новый процесс, ОС вызывает в экспортированную точку входа исполняемого образа. По умолчанию это точка входа C Runtime (CRT) ( WinMainCRTStartup ), которая подготавливает среду выполнения до передачи управления в предоставленную пользователем точку входа WinMain. Это первый пользовательский код, который выполняется.


Вы можете найти больше информации о том, что происходит, когда при запуске исполняемого файла на Windows на WinMain - просто обычное имя для точка входа в процесс Win32 .

Существует также доклад CppCon 2018 от Matt Godbolt под названием Биты между битами: как мы получаем main (), это объясняет подробно, что происходит перед выполнением первой строки пользовательского кода. Он указывается от c до Linux, но принципы применимы и к Windows.

...