Share via


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).

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.

Viz také

Obecná témata MFC