Types de DLL
Cette rubrique fournit des informations pour vous aider à déterminer le type de DLL à générer.
Différents types de DLL disponibles
À l’aide de Visual Studio, vous pouvez générer des DLL Win32 en C ou C++ qui n’utilisent pas la bibliothèque MFC (Microsoft Foundation Class). Vous pouvez créer un projet DLL non-MFC avec l’Assistant Application Win32.
La bibliothèque MFC elle-même est disponible, dans les bibliothèques de liens statiques ou dans un certain nombre de DLL, avec l’Assistant DLL MFC. Si votre DLL utilise MFC, Visual Studio prend en charge trois scénarios de développement DLL différents :
Génération d’une DLL MFC standard qui lie statiquement MFC
Génération d’une DLL MFC standard qui lie dynamiquement MFC
Création d’une DLL d’extension MFC, qui lie toujours dynamiquement MFC
Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?
Choix du type de DLL à utiliser
Si votre DLL n’utilise pas MFC, utilisez Visual Studio pour générer une DLL Win32 non MFC. La liaison de votre DLL à MFC (statiquement ou dynamiquement) occupe un espace disque et une mémoire significatifs. Vous ne devez pas créer de lien vers MFC, sauf si votre DLL utilise réellement MFC.
Si votre DLL utilise MFC et qu’elle sera utilisée par les applications MFC ou non MFC, vous devez générer une DLL MFC standard qui lie dynamiquement MFC à MFC ou une DLL MFC régulière qui lie statiquement à MFC. Dans la plupart des cas, vous souhaitez probablement utiliser une DLL MFC standard qui lie dynamiquement À MFC, car la taille de fichier de la DLL sera beaucoup plus petite et les économies de mémoire de l’utilisation de la version partagée de MFC peuvent être significatives. Si vous liez statiquement à MFC, la taille de fichier de votre DLL sera plus grande et peut prendre de la mémoire supplémentaire, car elle charge sa propre copie privée du code de la bibliothèque MFC.
La création d’une DLL qui lie dynamiquement à MFC est plus rapide que la génération d’une DLL qui lie statiquement à MFC, car il n’est pas nécessaire de lier MFC lui-même. Cela est particulièrement vrai dans les builds de débogage où l’éditeur de liens doit compacter les informations de débogage. En liant avec une DLL qui contient déjà les informations de débogage, il existe moins d’informations de débogage à compacter dans votre DLL.
L’un des inconvénients de la liaison dynamique à MFC est que vous devez distribuer les DLL partagées Mfcx0.dll et Msvcrxx.dll (ou fichiers similaires) avec votre DLL. Les DLL MFC sont redistribuables librement, mais vous devez toujours installer les DLL dans votre programme d’installation. En outre, vous devez expédier le Msvcrxx.dll, qui contient la bibliothèque d’exécution C utilisée à la fois par votre programme et les DLL MFC elles-mêmes.
Si votre DLL sera utilisée uniquement par les exécutables MFC, vous avez le choix entre créer une DLL MFC standard ou une DLL d’extension MFC. Si votre DLL implémente des classes réutilisables dérivées des classes MFC existantes ou que vous devez passer des objets dérivés de MFC entre l’application et la DLL, vous devez générer une DLL d’extension MFC.
Si votre DLL est liée dynamiquement à MFC, les DLL MFC peuvent être redistribuées avec votre DLL. Cette architecture est particulièrement utile pour partager la bibliothèque de classes entre plusieurs fichiers exécutables afin d’économiser de l’espace disque et de réduire l’utilisation de la mémoire.