MFC – verze knihovny
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 (soubory .exe) 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 AFX. Soubor záhlaví H dává linkeru pokyn, aby odkazoval v plné statické, omezené statické nebo sdílené verzi knihovny DLL mfc; ANSI/MBCS nebo Unicode verze; a ladicí nebo prodejní verzi v závislosti na konfiguraci sestavení:
#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í Kódování Unicode ve formuláři s kódováním UTF-16LE s širokým znakem. Pro podporu kódování Unicode kódování UTF-8 použijte verze knihovny ANSI/MBCS knihovny MFC.
Pokud chcete nastavit konfiguraci projektu tak, aby používala řetězec a podporu znaků Unicode s jedním bajtem, vícebajtem nebo širokoúhlým znakem v integrovaném vývojovém prostředí( IDE), použijte dialogové okno Vlastnosti projektu. Na stránce Obecné vlastnosti>konfigurace nastavte vlastnost Znaková sada na Nenastavit na použití jednobajtů 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í formulář.
uAFXcd. LIB
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.LIB | Mfc Static-Link Library, verze vydané verze |
NAFXCWD.LIB | Mfc Static-Link Library, ladicí verze |
UAFXCW. LIB | Mfc Static-Link Library s podporou Unicode, verze vydané verze |
UAFXCWD. LIB | Mfc Static-Link Library s podporou Unicode, verzí ladění |
AFXNMCD. LIB | Mfc Static-Link Library without MFC dialog controls, Release version |
AFXNMCDD. LIB | Mfc Static-Link Library without MFC dialog controls, Debug version |
Soubory ladicího programu, které mají stejný základní název a příponu .pdb, jsou k dispozici také pro každou statickou knihovnu.
Zásady vytváření názvů sdílených knihoven DLL mfc
Sdílené knihovny DLL MFC se řídí také strukturovanými konvencemi pojmenování. To usnadňuje zjistit, kterou knihovnu DLL nebo knihovnu byste měli použít pro který účel.
Knihovny MFC DLL 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.
DLL | Popis |
---|---|
MFCversion.DLL | MFC DLL, ANSI nebo MBCS – verze verze |
MFCverzeU.DLL | MFC DLL, verze unicode |
MFCverzeD.DLL | MFC DLL, ANSI nebo MBCS – ladicí verze |
MFCverzeUD.DLL | MFC DLL, verze ladění Unicode |
MFCMversion.DLL | MFC DLL s ovládacími prvky model Windows Forms, verzí ANSI nebo MBCS |
MFCMverzeU.DLL | MFC DLL s ovládacími prvky model Windows Forms, verzí sady Unicode |
MFCMverzeD.DLL | MFC DLL s ovládacími prvky model Windows Forms, verzí ladění ANSI nebo MBCS |
MFCMverzeUD.DLL | MFC DLL s ovládacími prvky model 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 propojíte se sdílenou verzí knihovny MFC knihovny MFC, ať už z aplikace nebo z knihovny DLL rozšíření MFC, musíte při nasazování produktu zahrnout odpovídající knihovnu MFCversion.DLL nebo U.DLL verzeknihovny MFC.
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 dynamické knihovny
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ších odkazech, protože definuje symbol preprocesoru _AFXDLL.
Při vytváření projektu knihovny DLL propojením se statickými knihovnami MFC lze knihovnu DLL nasadit bez sdílených knihoven DLL knihovny MFC. Když projekt knihovny DLL odkazuje na verzi KNIHOVNY MFCpro import. Lib nebo MFCverzeU.LIB, musíte nasadit odpovídající knihovny MFC sdílené knihovny DLL MFCverze.DLL nebo MFCverzeU.DLL společně s knihovnou DLL. Další informace najdete v tématu Knihovny DLL.