Initialisieren einer DLL
In der Regel verfügt die DLL über Initialisierungscode (wie dem zur Speicherbelegung), der beim Laden der DLL ausgeführt werden muss. Bei Verwendung von Visual C++ hängt es von der Art der erstellten DLL ab, an welcher Stelle Sie den Initialisierungscode einfügen. Wenn Sie keinen Initialisierungs- oder Terminierungscode hinzufügen müssen, sind beim Erstellen der DLL keine besonderen Schritte erforderlich. Falls die DLL jedoch initialisiert werden muss, können Sie der folgenden Tabelle entnehmen, wo Code eingefügt werden muss.
DLL-Typ |
Wo Initialisierungs- und Terminierungscode eingefügt werden muss |
---|---|
Reguläre DLL |
In den Funktionen InitInstance und ExitInstance des CWinApp-Objekts der DLL. |
Erweiterungs-DLL |
In der vom MFC-DLL-Assistenten generierten DllMain-Funktion. |
MFC-fremde DLL |
In einer Funktion mit dem Namen DllMain, die von Ihnen bereitgestellt wird. |
In Win32 können alle DLLs eine optionale Einstiegspunktfunktion (in der Regel DllMain) enthalten, die sowohl für die Initialisierung als auch für die Terminierung aufgerufen wird. Dadurch haben Sie die Möglichkeit, zusätzliche Ressourcen je nach Bedarf zu reservieren oder freizugeben. Windows ruft die Einstiegspunktfunktion in den folgenden vier Situationen auf: Anfügen an bzw. Trennen von einem Prozess und Anfügen an einen bzw. Trennen von einem Thread.
Die C-Laufzeitbibliothek stellt eine Einstiegspunktfunktion mit dem Namen _DllMainCRTStartup bereit, durch die DllMain aufgerufen wird. Abhängig vom DLL-Typ sollte entweder im Quellcode eine Funktion mit dem Namen DllMain enthalten sein, oder Sie sollten die in der MFC-Bibliothek vorhandene DllMain-Funktion verwenden.