Inizializzazione di una DLL
La DLL contiene in genere il codice di inizializzazione, come l'assegnazione di memoria, che occorre eseguire al caricamento della DLL. Con Visual C++, la posizione in cui aggiungere il codice per l'inizializzazione della DLL dipende dal tipo di DLL che si sta compilando. Se non occorre aggiungere codice di inizializzazione o terminazione, non è necessario eseguire particolari operazioni nella compilazione della DLL. Se è invece necessario inizializzare la DLL, consultare la tabella seguente in cui viene descritto dove aggiungere il codice.
Tipo DLL |
Dove aggiungere il codice di inizializzazione e terminazione |
---|---|
DLL regolare |
In InitInstance ed ExitInstance dell'oggetto CWinApp della DLL. |
DLL di estensione |
Nella funzione DllMain generata dalla Creazione guidata DLL MFC. |
DLL non MFC |
In una funzione denominata DllMain fornita dal creatore. |
In Win32 tutte le DLL possono contenere una funzione di punto di ingresso facoltativa, in genere denominata DllMain, chiamata sia per l'inizializzazione che per la terminazione. Questa funzione offre l'opportunità di assegnare o rilasciare risorse aggiuntive quando necessario. In Windows la funzione di punto di ingresso viene chiamata in quattro situazioni: connessione e disconnessione del processo, connessione e disconnessione del thread.
La libreria di runtime C offre una funzione di punto di ingresso denominata _DllMainCRTStartup e chiama DllMain. A seconda del tipo di DLL, è necessario avere una funzione denominata DllMain nel codice sorgente oppure utilizzare la funzione DllMain fornita nella libreria MFC.