Разница между WinMain,main и DllMain в C++
-
03-07-2019 - |
Вопрос
В чем разница между тремя функциями и когда их использовать??
Решение
WinMain используется для приложения (окончание .exe), чтобы указать, что процесс запускается. Он предоставит аргументы командной строки для процесса и послужит точкой входа пользовательского кода для процесса. WinMain (или другая версия main) также является обязательной функцией. ОС требуется функция для вызова, чтобы запустить запущенный процесс. Р>
DllMain используется для DLL, чтобы обозначить множество различных сценариев. В частности, он будет вызван, когда
<Ол>DllMain - это необязательная конструкция, с которой связано множество неявных контрактов. Например, вы не должны вызывать код, который заставит другую DLL загружаться. В общем, это довольно сложная функция, чтобы получить право, и ее следует избегать, если у вас нет особой необходимости в этом. Р>
Другие советы
основной() означает, что ваша программа является консольное приложение.
WinMain() означает, что программа представляет собой Приложение с графическим интерфейсом -- то есть вместо отображения консоли отображаются окна и диалоговые окна.
Дллмейн() означает, что программа представляет собой DLL.DLL не может быть запущена напрямую, но используется двумя вышеуказанными типами приложений.
Поэтому:
- Используйте WinMain, когда вы пишете программу, которая будет отображать окна и т. д.
- Используйте DLLMain при написании DLL.
- Во всех остальных случаях используйте main.
[Дополнение к вашему вопросу]
Также не забудьте DllEntryPoint:
Когда речь идет о времени загрузки, точкой входа является DllMain.
(Бывший.DLL внутрипроцессного сервера COM).Когда речь идет о времени выполнения, точкой входа является DllEntryPoint.
(Бывший.LoadLibrary вызывается).