Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
MFC-biblioteket finns i versioner som stöder ANSI enkebyte- och MBCS-teckenuppsättningar, samt versioner som stöder Unicode (kodad som UTF-16LE, den Windows-inbyggda teckenuppsättningen). Varje MFC-version är tillgänglig som ett statiskt bibliotek eller som en delad DLL. Det finns också en mindre version av MFC-statiskt bibliotek som utelämnar MFC-kontroller för dialogrutor, för program som är mycket känsliga för storlek och inte behöver dessa kontroller. MFC-biblioteken är tillgängliga i både felsöknings- och versionsversioner för arkitekturer som stöds som innehåller x86-, x64- och ARM-processorer. Du kan skapa både program (.exe filer) och DLL:er med valfri version av MFC-biblioteken. Det finns också en uppsättning MFC-bibliotek som kompilerats för att samverka med hanterad kod. De delade DLL:erna för MFC innehåller ett versionsnummer som anger binär kompatibilitet för bibliotek.
Automatisk länkning av MFC-biblioteksversioner
MFC-huvudfilerna fastställer automatiskt rätt version av MFC-biblioteket som ska länkas, baserat på värden som definierats i din byggmiljö. MFC-huvudfilerna lägger till kompileringsdirektiv som instruerar länkaren att länka i en specifik version av MFC-biblioteket.
Till exempel instruerar AFX.H-huvudfilen länkarens att länka den fullständiga statiska, begränsade statiska eller delade DLL-versionen av MFC; ANSI/MBCS- eller Unicode-version; och felsökningsversion eller driftsversion, beroende på din kompilationskonfiguration.
#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
MFC-huvudfiler innehåller också direktiv som länkar till alla nödvändiga bibliotek, inklusive MFC-bibliotek, Win32-bibliotek, OLE-bibliotek, OLE-bibliotek som skapats från exempel, ODBC-bibliotek och så vidare.
ANSI, MBCS och Unicode
MFC ANSI-/MBCS-biblioteksversionerna stöder både teckenuppsättningar med en byte, till exempel ASCII och flerbytesteckenuppsättningar, till exempel Skift-JIS. MFC Unicode-biblioteksversionerna stöder Unicode i dess UTF-16LE vid tecken kodade form. Använd ANSI/MBCS-biblioteksversionerna av MFC för UTF-8-kodat Unicode-stöd.
För att ställa in din projektkonfiguration för att använda enkla byte, flera byte eller Unicode-sträng- och teckenstöd i IDE:n, använd dialogrutan Projektegenskaper. På sidan Allmänna konfigurationsegenskaper> anger du egenskapen Teckenuppsättning till Inte inställd för att använda en teckenuppsättning med en byte. Ställ in egenskapen på Använd flerbytesteckenuppsättning för att använda en flerbytesteckenuppsättning eller använd Unicode-teckenuppsättning för att använda Unicode-kodad som UTF-16.
MFC-projekt använder förprocessorns symbol _UNICODE för att indikera UTF-16 brett tecken Unicode-support och _MBCS för att indikera MBCS-support. Dessa alternativ är ömsesidigt uteslutande i ett projekt.
Namngivningskonventioner för statiska MFC-bibliotek
Statiska bibliotek för MFC använder följande namngivningskonventioner. Biblioteksnamnen har formen
uAFXcd. LIB
där bokstäverna som visas som gemener i kursiv stil är platshållare för specifikationer vars betydelser framgår i följande tabell:
| Specificerare | Värden och betydelser |
|---|---|
| u | ANSI/MBCS (N) eller Unicode (U); utelämna för version utan MFC-kontroller i dialogrutor |
| c | Version med MFC-kontroller i dialogrutor (CW) eller utan (NMCD) |
| d | Felsöka eller släppa: D=Felsök; utelämnar specificerare för release |
Alla bibliotek som anges i följande tabell ingår i katalogen \atlmfc\lib för byggarkitekturer som stöds.
| Bibliotek | Beskrivning |
|---|---|
| NAFXCW. LIB | MFC Static-Link Library, releaseversion |
| NAFXCWD. LIB | MFC Static-Link-bibliotek, felsökningsversion |
| UAFXCW. LIB | MFC Static-Link-bibliotek med Unicode-stöd, utgåva |
| UAFXCWD. LIB | MFC Static-Link-bibliotek med Unicode-stöd, felsökningsversion |
| AFXNMCD. LIB | MFC Static-Link-bibliotek utan MFC-dialogkontroller, released version |
| AFXNMCDD. LIB | MFC Static-Link-bibliotek utan MFC-dialogkontroller, felsökningsversion |
Felsökningsfiler som har samma basnamn och ett .pdb-tillägg är också tillgängliga för vart och ett av de statiska biblioteken.
MFC-konventioner för namngivning av delade DLL:er
De delade DLL:erna för MFC följer också en strukturerad namngivningskonvention. Detta gör det enklare att veta vilket DLL eller bibliotek du ska använda för vilket ändamål.
MFC-DLL:er har versionsnummer som indikerar binär kompatibilitet. Använd MFC-DLL:er som har samma version som dina andra bibliotek och kompilatorverktyg för att garantera kompatibilitet i ett projekt.
| DLL | Beskrivning |
|---|---|
| MFCversion.DLL | MFC DLL, ANSI eller MBCS Release-version |
| MFC-versionU.DLL | Version av MFC DLL, Unicode |
| MFC-versionD.DLL | MFC DLL-, ANSI- eller MBCS-felsökningsversion |
| MFC-versionUD.DLL | MFC DLL, Unicode Debug-version |
| MFCM-version.DLL | MFC DLL med Windows Forms-kontroller, ANSI- eller MBCS-utgåva |
| MFCM-versionU.DLL | MFC DLL med Windows Forms-kontroller, Unicode Release-version |
| MFCM-versionD.DLL | MFC DLL med Windows Forms-kontroller, ANSI- eller MBCS-felsökningsversion |
| MFCM-versionUD.DLL | MFC DLL med Windows Forms-kontroller, Unicode-felsökningsversion |
Importbiblioteken som behövs för att skapa program eller DLL:er för MFC-tillägg som använder dessa delade DLL:er har samma basnamn som DLL-filen men har filnamnstillägget .lib. När du använder delade DLL:er måste ett litet statiskt bibliotek fortfarande vara länkat till din kod. det här biblioteket heterMFCS-versionen{U}{D}.lib.
Om du länkar dynamiskt till den delade DLL-versionen av MFC, oavsett om det är från ett program eller från ett MFC-tilläggs-DLL, måste du inkludera den matchande MFC-versionen.DLL eller MFC-versionen U.DLL när du distribuerar produkten.
En lista över Visual C++-DLL:er som kan distribueras med dina program finns i Distribuerbar kod för Microsoft Visual Studio 2017 och Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files) or Distributable Code for Visual Studio 2019 (Distribuerbar kod för Visual Studio 2019).
Mer information om MBCS- och Unicode-stöd i MFC finns i Stöd för Unicode- och Multibyte-teckenuppsättningar (MBCS).
Stöd för bibliotek med dynamisk länk
Du kan använda antingen statiska eller delade dynamiska MFC-bibliotek för att skapa DLL:er som kan användas av både MFC- och icke-MFC-körbara filer. Dessa kallas "vanliga DLL:er" eller "vanliga MFC-DLL:er", för att skilja dem från MFC-tilläggs-DLL:er som bara kan användas av MFC-appar och MFC-DLL:er. En DLL som skapats med hjälp av MFC-statiska bibliotek kallas ibland för en USRDLL i äldre referenser, eftersom MFC DLL-projekt definierar preprocessorsymbolen _USRDLL. En DLL som använder de delade DLL:erna för MFC kallas ibland för en AFXDLL i äldre referenser, eftersom den definierar symbolen för förprocessorn _AFXDLL.
När du skapar DLL-projektet genom att länka till de statiska MFC-biblioteken kan din DLL distribueras utan de delade DLL:erna för MFC. När DLL-projektet länkar till importbibliotekensMFC-version. LIB- ellerMFC-versionU.LIB måste du distribuera den matchande MFC-delade DLLMFC-versionen.DLL eller MFC-version U.DLL tillsammans med din DLL. Mer information finns i DLL:er.