Dela via


Typer av DLL:er

Det här avsnittet innehåller information som hjälper dig att fastställa vilken typ av DLL som ska skapas.

Olika typer av DLL:er tillgängliga

Med Visual Studio kan du skapa Win32-DLL:er i C eller C++ som inte använder MFC-biblioteket (Microsoft Foundation Class). Du kan skapa ett icke-MFC DLL-projekt med win32-programguiden.

Själva MFC-biblioteket är tillgängligt, antingen i statiska länkbibliotek eller i ett antal DLL:er, med MFC DLL-guiden. Om din DLL använder MFC stöder Visual Studio tre olika DLL-utvecklingsscenarier:

  • Skapa en vanlig MFC DLL som statiskt länkar MFC

  • Skapa en vanlig MFC DLL som dynamiskt länkar MFC

  • Skapa en MFC-tilläggs-DLL, som alltid dynamiskt länkar MFC

Vad vill du veta mer om?

Bestämma vilken typ av DLL som ska användas

Om din DLL inte använder MFC använder du Visual Studio för att skapa en win32-DLL som inte är MFC. Att länka din DLL till MFC (statiskt eller dynamiskt) tar upp stort diskutrymme och minne. Du bör inte länka till MFC om inte din DLL faktiskt använder MFC.

Om din DLL använder MFC och kommer att användas av MFC- eller icke-MFC-program måste du antingen skapa en vanlig MFC DLL som dynamiskt länkar till MFC eller en vanlig MFC DLL som statiskt länkar till MFC. I de flesta fall vill du förmodligen använda en vanlig MFC DLL som dynamiskt länkar till MFC eftersom filstorleken för DLL kommer att vara mycket mindre och besparingarna i minnet från att använda den delade versionen av MFC kan vara betydande. Om du statiskt länkar till MFC blir filstorleken för din DLL större och kan ta upp extra minne eftersom den läser in sin egen privata kopia av MFC-bibliotekskoden.

Det går snabbare att skapa en DLL som dynamiskt länkar till MFC än att skapa en DLL som statiskt länkar till MFC eftersom det inte är nödvändigt att länka själva MFC. Detta gäller särskilt i felsökningsversioner där länkaren måste komprimera felsökningsinformationen. Genom att länka med en DLL som redan innehåller felsökningsinformationen finns det mindre felsökningsinformation att komprimera i din DLL.

En nackdel med dynamisk länkning till MFC är att du måste distribuera delade DLL:er Mfcx0.dll och Msvcrxx.dll (eller liknande filer) med din DLL. MFC-DLL:er är fritt omdistribuerbara, men du måste fortfarande installera DLL:er i installationsprogrammet. Dessutom måste du skicka Msvcrxx.dll, som innehåller C-körningsbiblioteket som används både av programmet och själva MFC-DLL:erna.

Om din DLL endast kommer att användas av körbara MFC-filer kan du välja mellan att skapa en vanlig MFC DLL eller ett MFC-tilläggs-DLL. Om din DLL implementerar återanvändbara klasser som härletts från de befintliga MFC-klasserna eller om du behöver skicka MFC-härledda objekt mellan programmet och DLL måste du skapa ett MFC-tilläggs-DLL.

Om DLL-filen länkar dynamiskt till MFC kan MFC-DLL:erna distribueras om med din DLL. Den här arkitekturen är särskilt användbar för att dela klassbiblioteket mellan flera körbara filer för att spara diskutrymme och minimera minnesanvändningen.

Vad vill du veta mer om?

Se även

Skapa DLL:er för C/C++ i Visual Studio