Frage

Was ist der Unterschied zwischen den drei Funktionen, und wenn sie benutzen ??

War es hilfreich?

Lösung

WinMain ist für eine Anwendung (Endung .exe) verwendet der Prozess, um anzuzeigen, beginnt. Es wird Befehlszeilenargumente für den Prozess zur Verfügung stellt und dient als Einstiegspunkt Benutzercode für einen Prozess. WinMain (oder eine andere Version von Haupt) ist auch eine gewünschte Funktion aus. Das Betriebssystem braucht eine Funktion aufrufen, um zu starten ein Prozess läuft.

DllMain für eine DLL verwendet, um eine Menge von verschiedenen Szenarien zu bedeuten. Vor allem wird es, wenn sie aufgerufen werden

  1. Die DLL wird geladen in den Prozess: DLL_PROCESS_ATTACH
  2. Die DLL aus dem Prozess ausgeladen wird: DLL_PROCESS_DETACH
  3. Ein Thread im Prozess gestartet: DLL_THREAD_ATTACH
  4. Ein Thread im Prozess beendet wird: DLL_THREAD_DETACH

DllMain ist ein optionales Konstrukt und hat mit ihm eine Menge impliziter Verträge verbunden. Zum Beispiel sollten Sie nicht Code anrufen, die eine andere DLL zu laden zwingen werden. Im Allgemeinen ist es ziemlich schwierig Funktion richtig zu machen und soll vermieden werden, wenn Sie einen sehr spezifischen Bedarf dafür haben.

Andere Tipps

main () bedeutet, dass Ihr Programm eine rel="noreferrer"> Konsolenanwendung

WinMain () bedeutet, dass das Programm eine GUI-Anwendung ist - -. das heißt, es zeigt Fenster und Dialogfelder anstelle Konsole zeigt

DllMain () bedeutet, dass das Programm ein DLL . Eine DLL kann nicht direkt ausgeführt werden, sondern wird durch die oben genannten zwei Arten von Anwendungen verwendet.

Deshalb:

  • Verwenden Sie WinMain wenn Sie ein Programm schreiben, die Fenster usw. angezeigt wird.
  • Verwenden Sie DLLMain, wenn Sie schreiben eine DLL.
  • Verwenden Sie Haupt in allen anderen Fällen.

[Nachtrag zu Ihrer Frage]

Vergessen Sie auch nicht die DllEntryPoint:

  • Wenn die Zeit Laden der Eintrittspunkt beteiligt ist, ist DllMain.
    (Bsp. COM In-Process-Server DLL).

  • Wenn die Zeit läuft den Eintrittspunkt beteiligt ist, ist DllEntryPoint.
    (Bsp. Loadlibrary aufgerufen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top