Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Knihovna MFC je k dispozici ve verzích, které podporují kód jednobajtové a vícebajtové znakové sady (MBCS) ANSI, stejně jako verze podporující Unicode (kódované jako UTF-16LE, znaková sada nativní pro Windows). Každá verze MFC je k dispozici jako statická knihovna nebo jako sdílená knihovna DLL. K dispozici je také menší verze statické knihovny MFC, která vynechá ovládací prvky MFC pro dialogy, pro aplikace, které jsou velmi citlivé na velikost a nepotřebují tyto ovládací prvky. Knihovny MFC jsou k dispozici ve verzích ladění i verzí pro podporované architektury, které zahrnují procesory x86, x64 a ARM. Můžete vytvářet aplikace (.exe soubory) i knihovny DLL s libovolnou verzí knihoven MFC. Existuje také sada knihoven MFC zkompilovaných pro propojení se spravovaným kódem. Sdílené knihovny DLL mfc obsahují číslo verze označující binární kompatibilitu knihovny.
Automatické propojení verzí knihovny MFC
Soubory hlaviček MFC automaticky určují správnou verzi knihovny MFC, která se má propojit na základě hodnot definovaných v prostředí sestavení. Soubory hlaviček MFC přidávají direktivy kompilátoru, které linkeru instruují, aby odkazoval v konkrétní verzi knihovny MFC.
Například záhlaví souboru AFX.H dává linkeru pokyn, aby zahrnul plnou statickou, omezenou statickou nebo sdílenou DLL verzi MFC; ANSI/MBCS nebo Unicode verzi; a ladicí nebo prodejní verzi, v závislosti na konfiguraci vaší sestavy.
#ifndef _AFXDLL
#ifdef _AFX_NO_MFC_CONTROLS_IN_DIALOGS
#ifdef _DEBUG
#pragma comment(lib, "afxnmcdd.lib")
#else
#pragma comment(lib, "afxnmcd.lib")
#endif
#pragma comment(linker, "/include:__afxNoMFCControlSupportInDialogs")
#pragma comment(linker, "/include:__afxNoMFCControlContainerInDialogs")
#endif
#ifndef _UNICODE
#ifdef _DEBUG
#pragma comment(lib, "nafxcwd.lib")
#else
#pragma comment(lib, "nafxcw.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "uafxcwd.lib")
#else
#pragma comment(lib, "uafxcw.lib")
#endif
#endif
#else
#ifndef _UNICODE
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "d.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "d.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER ".lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER ".lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "ud.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "ud.lib")
#else
#pragma comment(lib, "mfc" _MFC_FILENAME_VER "u.lib")
#pragma comment(lib, "mfcs" _MFC_FILENAME_VER "u.lib")
#endif
#endif
#endif
Soubory hlaviček MFC také obsahují direktivy pro propojení ve všech požadovaných knihovnách, včetně knihoven MFC, knihoven Win32, knihoven OLE, knihoven OLE vytvořených z ukázek, knihoven ODBC atd.
ANSI, MBCS a Unicode
Verze knihovny MFC ANSI/MBCS podporují jednobajtové znakové sady, jako je ASCII, a vícebajtové znakové sady, jako je Shift-JIS. Verze knihovny MFC Unicode podporují Unicode ve formátu širokého znakového kódování UTF-16LE. Pro podporu Unicode v kódování UTF-8 použijte verze knihovny ANSI/MBCS MFC.
Pokud chcete nastavit konfiguraci projektu tak, aby používala podporu jednobajtových, vícibajtových nebo širokých znaků a řetězců Unicode v integrovaném vývojovém prostředí (IDE), použijte dialogové okno Vlastnosti projektu. Na stránce Vlastnosti konfigurace>Obecné nastavte vlastnost Znaková sada na Nenastaveno pro použití jednobajtové znakové sady. Vlastnost nastavte na použití vícebajtové znakové sady pro použití vícebajtové znakové sady nebo použití znakové sady Unicode pro použití Unicode kódované jako UTF-16.
Projekty MFC používají symbol preprocesoru _UNICODE k označení podpory UTF-16 wide-character Unicode a _MBCS k označení podpory MBCS. Tyto možnosti se vzájemně vylučují v projektu.
Zásady vytváření názvů statických knihoven MFC
Statické knihovny pro MFC používají následující zásady vytváření názvů. Názvy knihoven mají formát.
uAFXcd. OSVOBOZENÍ
kde písmena zobrazená kurzívou jsou zástupné symboly pro specifikátory, jejichž významy jsou uvedeny v následující tabulce:
| Specifikátor | Hodnoty a významy |
|---|---|
| u | ANSI/MBCS (N) nebo Unicode (U); Vynechání verze bez ovládacích prvků MFC v dialogových oknech |
| c | Verze s ovládacími prvky MFC v dialogových oknech (CW) nebo bez (NMCD) |
| d | Ladění nebo vydání: D=Debug; Vynechání specifikátoru pro vydání |
Všechny knihovny uvedené v následující tabulce jsou součástí předem připraveného adresáře \atlmfc\lib pro podporované architektury sestavení.
| Knihovna | Popis |
|---|---|
| NAFXCW. OSVOBOZENÍ | Knihovna MFC Static-Link, verze vydání |
| NAFXCWD. OSVOBOZENÍ | Knihovna MFC Static-Link, debug verze |
| UAFXCW. OSVOBOZENÍ | Knihovna MFC Static-Link s podporou Unicode, uvolněná verze |
| UAFXCWD. OSVOBOZENÍ | knihovna MFC Static-Link s podporou Unicode, ladicí verze |
| AFXNMCD. OSVOBOZENÍ | Knihovna MFC Static-Link bez ovládacích prvků dialogového okna MFC, vydaná verze |
| AFXNMCDD. OSVOBOZENÍ | KNIHOVNA MFC Static-Link bez ovládacích prvků dialogového okna MFC, verze pro ladění |
Soubory ladicího programu, které mají stejný základní název a příponu .pdb, jsou k dispozici také pro každou statickou knihovnu.
Konvence pojmenování sdílených knihoven DLL MFC
Sdílené knihovny DLL MFC se řídí také strukturovanými konvencemi pojmenování. To usnadňuje zjistit, pro který účel byste měli použít knihovnu DLL nebo jinou knihovnu.
Knihovny DLL MFC mají čísla verzí, která označují binární kompatibilitu. K zajištění kompatibility v projektu použijte knihovny MFC DLL, které mají stejnou verzi jako ostatní knihovny a sadu nástrojů kompilátoru.
| Knihovna dll | Popis |
|---|---|
| MFCverze.DLL | MFC DLL, ANSI nebo MBCS Release verze |
| MFCverzeU.DLL | MFC DLL, verze unicode |
| MFCverzeD.DLL | MFC DLL, ANSI nebo MBCS – debugovací verze |
| MFCverzeUD.DLL | MFC DLL, verze ladění Unicode |
| MFCMverze.DLL | MFC DLL s ovládacími prvky Windows Forms, verze ANSI nebo MBCS |
| MFCMverzeU.DLL | MFC DLL s ovládacími prvky Windows Forms, verze Unicode |
| MFCMverzeD.DLL | MFC DLL s ovládacími prvky Windows Forms, verze pro ladění ANSI nebo MBCS |
| MFCMverzeUD.DLL | MFC DLL s ovládacími prvky Windows Forms, verzí ladění Unicode |
Knihovny importu potřebné k vytváření aplikací nebo knihoven DLL rozšíření MFC, které používají tyto sdílené knihovny DLL, mají stejný základní název jako knihovna DLL, ale mají příponu názvu souboru .lib. Při použití sdílených knihoven DLL musí být malá statická knihovna stále propojena s vaším kódem; tato knihovna má název MFCSversion{U}{D}.lib.
Pokud dynamicky propojujete svou aplikaci nebo rozšíření DLL MFC se sdílenou verzí knihovny MFC, musíte při nasazení produktu zahrnout odpovídající knihovnu MFCverze.DLL nebo MFCverzeU.DLL.
Seznam knihoven DLL jazyka Visual C++, které lze distribuovat s vašimi aplikacemi, najdete v tématu Distribuovatelný kód pro Microsoft Visual Studio 2017 a Microsoft Visual Studio 2017 SDK (zahrnuje nástroje a soubory buildovacího serveru) nebo distribuovatelný kód pro Visual Studio 2019.
Další informace o podpoře mbCS a Unicode v prostředí MFC naleznete v tématu Podpora unicode a vícebajtové znakové sady (MBCS).
Podpora knihovny dynamických odkazů
Pomocí statických nebo sdílených dynamických knihoven MFC můžete vytvářet knihovny DLL, které můžou používat spustitelné soubory MFC i jiné než MFC. Tyto knihovny se nazývají "běžné knihovny DLL" nebo "běžné knihovny MFC DLL", aby se odlišily od rozšiřujících knihoven DLL mfc, které lze používat pouze v aplikacích MFC a knihovnách MFC DLL. Knihovna DLL vytvořená pomocí statických knihoven MFC se někdy označuje jako USRDLL ve starších odkazech, protože projekty knihovny MFC DLL definují symbol preprocesoru _USRDLL. Knihovna DLL, která používá sdílené knihovny DLL MFC, se někdy označuje jako AFXDLL ve starší dokumentaci, protože definuje symbol preprocesoru _AFXDLL.
Při vytváření vašeho projektu DLL pomocí propojení se statickými knihovnami MFC můžete nasadit DLL bez použití sdílených knihoven DLL MFC. Když váš projekt DLL odkazuje na importní knihovny MFCverze.LIB nebo MFCverzeU.LIB, musíte společně s vaší DLL nasadit odpovídající sdílenou MFC knihovnu MFCverze.DLL nebo MFCverzeU.DLL. Další informace najdete v tématu Knihovny DLL.