Различие между WinMain, основным и DllMain в C++

20
задан sorin 18 April 2010 в 22:05
поделиться

2 ответа

WinMain используется для приложения (заканчивающийся .exe), чтобы указать, что процесс запускается. Это обеспечит параметры командной строки для процесса и служит пользовательской точкой входа кода для процесса. WinMain (или другая версия основного) является также необходимой функцией. ОС нужна функция для вызова, чтобы к запускаются выполнение процесса.

DllMain используется, чтобы DLL показал много различных сценариев. Прежде всего это назовут, когда

  1. DLL будет загружен в процесс: DLL_PROCESS_ATTACH
  2. DLL разгружен от процесса: DLL_PROCESS_DETACH
  3. поток А запускается в процессе: DLL_THREAD_ATTACH
  4. поток А заканчивается в процессе: DLL_THREAD_DETACH

DllMain является дополнительной конструкцией и имеет много неявных контрактов, связанных с нею. Например, Вы не должны быть кодом вызова, который вынудит другой DLL загрузиться. В целом это - довольно трудная функция для разбираний и должно избежаться, если у Вас нет очень определенной потребности в нем.

9
ответ дан 30 November 2019 в 00:35
поделиться

основной () означает, что Ваша программа консольное приложение .

, WinMain () подразумевает, что программа приложение GUI - то есть, это отображает окна и диалоговые окна вместо того, чтобы показать консоль.

DllMain () подразумевает, что программа DLL. DLL не может быть выполнен непосредственно, но используется вышеупомянутыми двумя видами приложений.

Поэтому:

  • Использование WinMain, когда Вы пишете программу, которая идет в окна экрана и т.д.
  • Использование DLLMain, когда Вы пишете DLL.
  • Использование, основное во всех других случаях.
21
ответ дан 30 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: