Druhy knihoven DLL
Toto téma obsahuje informace, které vám pomůžou určit typ knihovny DLL pro sestavení.
Dostupné různé druhy knihoven DLL
Pomocí sady Visual Studio můžete sestavit knihovny DLL win32 v jazyce C nebo C++, které nepoužívají knihovnu Microsoft Foundation Class (MFC). Pomocí Průvodce aplikací Win32 můžete vytvořit projekt knihovny DLL jiného typu než MFC.
Samotná knihovna MFC je k dispozici buď ve statických knihovnách propojení, nebo v řadě knihoven DLL pomocí Průvodce knihovnou MFC DLL. Pokud knihovna DLL používá mfc, Visual Studio podporuje tři různé scénáře vývoje knihoven DLL:
Sestavení běžné knihovny MFC DLL, která staticky propojuje knihovnu MFC
Sestavení běžné knihovny MFC DLL, která dynamicky propojuje knihovnu MFC
Sestavení rozšiřující knihovny DLL knihovny MFC, která vždy dynamicky propojuje mfc
O čem chcete vědět víc?
Rozhodování o tom, jaký druh knihovny DLL se má použít
Pokud knihovna DLL nepoužívá knihovnu MFC, pomocí sady Visual Studio sestavte knihovnu DLL win32 jiného typu než MFC. Propojení knihovny DLL s knihovnou MFC (staticky nebo dynamicky) zabírá značné místo na disku a paměť. Pokud knihovna DLL skutečně nepoužívá knihovnu MFC, neměli byste se připojit k prostředí MFC.
Pokud bude knihovna DLL používat knihovnu MFC a bude ji používat aplikace MFC nebo jiné aplikace, je nutné vytvořit buď běžnou knihovnu MFC DLL, která dynamicky odkazuje na knihovnu MFC, nebo běžnou knihovnu MFC DLL, která staticky odkazuje na knihovnu MFC. Ve většině případů pravděpodobně chcete použít běžnou knihovnu MFC DLL, která dynamicky odkazuje na knihovnu MFC, protože velikost souboru knihovny DLL bude mnohem menší a úspory v paměti při používání sdílené verze knihovny MFC mohou být významné. Pokud staticky propočítáte knihovnu MFC, velikost souboru knihovny DLL bude větší a potenciálně zabere další paměť, protože načte vlastní soukromou kopii kódu knihovny MFC.
Sestavení knihovny DLL, která dynamicky propojuje knihovnu MFC, je rychlejší než sestavení knihovny DLL, která staticky odkazuje na knihovnu MFC, protože není nutné propojit samotnou knihovnu MFC. To platí zejména v buildech ladění, kde linker musí komprimovat informace o ladění. Propojením s knihovnou DLL, která již obsahuje informace o ladění, je méně informací o ladění komprimovat v rámci knihovny DLL.
Jednou z nevýhod dynamického propojení s mfc je, že sdílené knihovny DLL musíte distribuovat Mfcx0.dll a Msvcrxx.dll (nebo podobné soubory) s knihovnou DLL. Knihovny MFC DLL jsou volně redistribuovatelné, ale přesto je nutné nainstalovat knihovny DLL do instalačního programu. Kromě toho musíte odeslat Msvcrxx.dll, která obsahuje knihovnu runtime jazyka C, která je používána programem i vlastními knihovnami MFC DLL.
Pokud vaše knihovna DLL bude používána pouze spustitelnými soubory MFC, máte na výběr mezi sestavením běžné knihovny MFC DLL nebo knihovny DLL rozšíření MFC. Pokud vaše knihovna DLL implementuje opakovaně použitelné třídy odvozené z existujících tříd MFC nebo potřebujete předat odvozené objekty MFC mezi aplikací a knihovnou DLL, je nutné sestavit rozšiřující knihovnu DLL knihovny MFC.
Pokud knihovna DLL dynamicky odkazuje na knihovnu MFC, mohou být knihovny DLL redistribuovány s knihovnou DLL. Tato architektura je obzvláště užitečná pro sdílení knihovny tříd mezi několika spustitelnými soubory za účelem úspory místa na disku a minimalizace využití paměti.