Typy knihoven DLL
Toto téma poskytuje informace, které vám pomohou určit druh knihovny k sestavení.
Různé typy knihoven DLL, které jsou k dispozici
Použitím Visual C++ můžete sestavit Win32 knihovny DLL v jazyce C nebo v jazyce C++, které nepoužívají knihovnu MFC.Můžete vytvořit projekt knihovny non-MFC DLL s Win32 Průvodcem aplikace.
Knihovna MFC je sama o sobě k dispozici v každém statickém propojení knihoven nebo počtem knihoven DLL s průvodcem knihovny MFC DLL.Pokud je Vaše knihovna DLL používána knihovnou MFC, Visual C++ podporuje tři různé scénáře vývoje knihovny DLL:
Sestavování obvyklé knihovny DLL, která staticky propojuje knihovnu MFC
Sestavování obvyklé knihovny DLL, která dynamicky propojuje knihovnu MFC
Sestavování rozšířující knihovny MFC DLL, která vždy dynamicky propojí knihovnu MFC
Co chcete vědět více?
Jaký druh knihovny DLL chcete použít
Rozhodnutí, který druh knihovny DLL použít
Pokud Vaše knihovna DLL nepoužívá knihovnu MFC, použijte Visual C++ k sestavení non-MFC Win32 DLL.Propojování Vaší knihovny DLL ke knihovně MFC (staticky nebo dynamicky) zabere podstatné místo na disku a paměti.Neměli by jste propojovat ke knihovně MFC, dokud vaše knihovna DLL aktuálně používá knihovnu MFC.
Pokud bude Vaše knihovna DLL používat knihovnu MFC a budou použity buď aplikace knihovny MFC nebo knihovny non-MFC, musíte sestavit buď obvyklou knihovnu DLL, která propojuje ke knihovně MFC nebo k obvyklé knihovně DLL, která staticky propojuje do knihovny MFC.Ve většině případů, budete pravděpodobně chtít použít obvyklou knihovnu DLL, která dynamicky propojuje na knihovnu MFC, protože velikost souboru knihovny DLL bude příliš malá a ukládání v paměti od používání sdílených verzí knihovny MFC může být významné.Pokud staticky propojíte ke knihovně MFC, velikost souboru Vaší knihovny DLL bude větší a potenciálně zabere dodatečnou paměť, protože je načtena vlastní soukromá kopie kódu knihovny MFC.
Sestavení knihovny DLL, která dynamicky propojuje ke knihovně MFC je rychlejší než sestavování knihovny DLL, který staticky propojuje ke knihovně MFC, protože není nutné samostatně propojit ke knihovně MFC.To platí zejména v sestavení ladění, kde musí propojovací program kompaktně ladit informace.Díky propojení s knihovnou DLL, která již obsahuje ladící informace, tady je méně ladící informace ke spojení v rámci vaší DLL knihovny.
Jedná nevýhoda k dynamickému propojení ke knihovně MFC je, že musíte distribuovat sdílené knihovny DLL Mfcx0.dll (nebo podobné soubory) s vaší knihovnou DLL.Knihovny DLL MFC jsou volně redistribuovány, ale stále je nutné nainstalovat knihovny DLL ve Vašem instalačním programu.Kromě toho musíte poskytnout Msvcrxx.dll, která obsahuje běhovou knihovnu jazyka C, která je použita jak vašim programem, tak samotnými knihovnami MFC DLL.
Pokud bude Vaše knihovna DLL použita pouze spustitelnými soubory knihovny MFC, máte možnost volby mezi sestavením pravidelné knihovny DLL nebo rozšířené knihovny DLL.Jestliže Vaše knihovna DLL opakovaně implementuje použitelné třídy odvozené z existujících tříd knihovny MFC nebo potřebujete předat odvozené objekty knihovny MFC, musíte sestavit rozšiřující knihovnu DLL.
Pokud Vaše knihovna DLL dynamicky propojuje ke knihovně MFC, knihovny DLL MFC můžou být znovu distribuovány s Vaší knihovou DLL.Tato architektura je zvláště užitečná pro sdílení knihovny tříd mezi několika spustitelnými soubory k šetření místa na disku a minimalizuje využití paměti.
Verze 4.0, Visual C++ pouze podporované dva druhy knihovny DLL, které používá MFC: USRDLLs a AFXDLLs.Obvyklé knihovny DLL staticky propojené ke knihovně MFC mají stejné vlastnosti jako dosavadní USRDLL.Rozšířující knihovny DLL mají stejné vlastnosti jako dřívější AFXDLL.