Druhy knihoven DLL

Toto téma poskytuje informace, které vám pomohou určit druh knihovny k sestavení.

Různé typy dostupných knihoven DLL

Použitím Visual C++ můžete sestavit Win32 knihovny DLL v jazyce C nebo v jazyce C++, které nepoužívají knihovnu MFC (Microsoft Foundation Class).Můžete vytvořit projekt knihovny non-MFC DLL pomocí průvodce aplikací Win32.

Knihovna MFC je sama o sobě k dispozici ve statickém propojení knihoven nebo v řadě 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šiřující knihovny DLL MFC, která vždy dynamicky propojí knihovnu MFC

O čem chcete vědět více?

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 značnou část disku a paměti.Neměli byste propojovat ke knihovně MFC, pokud vaše knihovna DLL aktuálně nepoužívá knihovnu MFC.

Pokud bude vaše knihovna DLL používat knihovnu MFC a budou použity aplikace knihovny MFC nebo knihovny non-MFC, musíte sestavit obvyklou knihovnu DLL, která propojuje ke knihovně MFC, nebo obvyklou knihovnu DLL, která staticky propojuje ke knihovně 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 mnohem menší a úspora paměti narozdíl od použití sdílených verzí knihovny MFC může být značná.Pokud staticky propojíte ke knihovně MFC, velikost souboru 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á je dynamicky propojena s knihovnou MFC, je rychlejší než sestavování knihovny DLL, která je propojena s knihovnou MFC staticky, protože není nutné samostatně propojit knihovnu 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, je méně ladících informací ke spojení v rámci vaší DLL knihovny.

Jednou nevýhodou dynamického 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 použitou jak vaším 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 běžné 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.

Před verzí 4.0 podporoval jazyk Visual C++ pouze dva druhy knihoven DLL, které používají knihovnu MFC: USRDLL a AFXDLL.Obvyklé knihovny DLL staticky propojené ke knihovně MFC mají stejné vlastnosti jako dosavadní USRDLL.Rozšiřující knihovny DLL MFC mají stejné vlastnosti jako dřívější AFXDLL.

O čem chcete vědět více?

Viz také

Koncepty

Knihovny DLL v jazyce Visual C++