Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Da reguläre DLLs über ein CWinApp-Objekt verfügen, sollten sie ihre Initialisierungs- und Terminierungsaufgaben an derselben Stelle ausführen wie eine MFC-Anwendung: in den Memberfunktionen InitInstance und ExitInstance der von CWinApp abgeleiteten Klasse der DLL.MFC umfasst eine DllMain-Funktion, die von _DllMainCRTStartup für PROCESS_ATTACH und PROCESS_DETACH aufgerufen wird. Folglich sollten Sie keine eigene DllMain-Funktion schreiben.Die von MFC bereitgestellte DllMain-Funktion ruft InitInstance beim Laden der DLL und ExitInstance vor dem Entladen der DLL auf.
Eine reguläre DLL kann mehrere Threads verfolgen, indem sie in ihrer InitInstance-Funktion die Funktionen TlsAlloc und TlsGetValue aufruft.Mit diesen Funktionen kann die DLL threadspezifische Daten verfolgen.
Wenn Sie die MFC-Unterstützung für OLE, Datenbanken (bzw. DAO) oder Sockets in einer regulären, dynamisch mit MFC verknüpften DLL verwenden, dann werden die MFC-Debugbuilds der Erweiterungs-DLLs MFCOxxD.dll, MFCDxxD.dll und MFCNxxD.dll automatisch eingebunden (wobei xx für die Versionsnummer steht).Sie müssen eine der folgenden vordefinierten Initialisierungsfunktionen für jede dieser DLLs aufrufen, die Sie in CWinApp::InitInstance der regulären DLL verwenden.
Art der MFC-Unterstützung |
Aufzurufende Initialisierungsfunktion |
|---|---|
MFC-OLE (MFCOxxD.dll) |
AfxOleInitModule |
MFC-Datenbank (MFCDxxD.dll) |
AfxDbInitModule |
MFC-Sockets (MFCNxxD.dll) |
AfxNetInitModule |
Was möchten Sie tun?
Worüber möchten Sie mehr erfahren?
Das Verhalten der C-Laufzeitbibliothek und _DllMainCRTStartup
Verwenden von Datenbank-, OLE- und Sockets-Erweiterungs-DLLs in regulären DLLs
Thread local storage wrappers (MFC Technical Note 58, nur auf Englisch verfügbar)