Вопрос

В чем разница между тремя функциями и когда их использовать??

Это было полезно?

Решение

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

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

<Ол>
  • DLL загружается в процесс: DLL_PROCESS_ATTACH
  • DLL выгружается из процесса: DLL_PROCESS_DETACH
  • В процессе запущен поток: DLL_THREAD_ATTACH
  • Поток завершается в процессе: DLL_THREAD_DETACH
  • DllMain - это необязательная конструкция, с которой связано множество неявных контрактов. Например, вы не должны вызывать код, который заставит другую DLL загружаться. В общем, это довольно сложная функция, чтобы получить право, и ее следует избегать, если у вас нет особой необходимости в этом.

    Другие советы

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

    WinMain() означает, что программа представляет собой Приложение с графическим интерфейсом -- то есть вместо отображения консоли отображаются окна и диалоговые окна.

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

    Поэтому:

    • Используйте WinMain, когда вы пишете программу, которая будет отображать окна и т. д.
    • Используйте DLLMain при написании DLL.
    • Во всех остальных случаях используйте main.

    [Дополнение к вашему вопросу]

    Также не забудьте DllEntryPoint:

    • Когда речь идет о времени загрузки, точкой входа является DllMain.
      (Бывший.DLL внутрипроцессного сервера COM).

    • Когда речь идет о времени выполнения, точкой входа является DllEntryPoint.
      (Бывший.LoadLibrary вызывается).

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top