Initialisation d'une DLL
En général, la DLL possède un code d'initialisation (comme l'allocation de mémoire) qui doit s'exécuter lors du chargement de la DLL. Lorsque vous utilisez Visual C++, l'emplacement où vous ajoutez le code d'initialisation de la DLL dépend du type de DLL que vous générez. Si vous n'avez pas besoin d'ajouter un code d'initialisation ou d'arrêt, vous n'avez rien de spécial à faire lors de la génération de la DLL. Si vous devez initialiser la DLL, le tableau suivant indique où ajouter le code.
Type de DLL |
Où ajouter le code d'initialisation et d'arrêt |
---|---|
DLL normale |
Dans les fonctions InitInstance et ExitInstance de l'objet CWinApp de la DLL. |
DLL d'extension |
Dans la fonction DllMain générée par l'Assistant DLL MFC. |
DLL non-MFC |
Dans une fonction appelée DllMain que vous fournissez. |
En environnement Win32, toutes les DLL peuvent contenir une fonction de point d'entrée facultative (généralement dénommée DllMain) qui est appelée à la fois pour l'initialisation et l'arrêt. Cela vous donne la possibilité d'allouer ou de libérer des ressources supplémentaires, en fonction des besoins. Windows appelle la fonction de point d'entrée dans quatre situations : attachement de processus, détachement de processus, attachement de thread et détachement de thread.
La bibliothèque Runtime C fournit une fonction de point d'entrée dénommée _DllMainCRTStartup et appelle DllMain. Selon le type de DLL, vous devez avoir une fonction appelée DllMain dans le code source ou utiliser le DllMain fourni dans la bibliothèque MFC.
Que voulez-vous faire ?
Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?
Comportement de la bibliothèque Runtime C et DllMainCRTStartup
La spécification de fonction pour DllMain (Kit de développement logiciel Windows)