Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az MFC-kódtár olyan verziókban érhető el, amelyek támogatják az ANSI egybájtos és többbájtos karakterkészletének (MBCS) kódját, valamint a Unicode-ot (UTF-16LE-ként kódolt, Windows-natív karakterkészlet) támogató verziókban. Minden MFC-verzió statikus kódtárként vagy megosztott DLL-ként érhető el. Van egy kisebb MFC statikus kódtár verziója is, amely kihagyja az MFC-vezérlőket a párbeszédpanelekhez, olyan alkalmazásokhoz, amelyek nagyon érzékenyek a méretre, és nincs szükségük ezekre a vezérlőkre. Az MFC-kódtárak hibakeresési és kiadási verziókban is elérhetők az x86, x64 és ARM processzorokat tartalmazó támogatott architektúrákhoz. Az MFC-kódtárak bármely verziójával létrehozhat alkalmazásokat (.exe fájlokat) és DLL-eket. A felügyelt kódokkal való együttműködéshez MFC-kódtárak is vannak lefordítva. A megosztott MFC-DLL-ek verziószámmal jelzik a kódtár bináris kompatibilitását.
Az MFC-kódtár verzióinak automatikus csatolása
Az MFC fejlécfájljai automatikusan meghatározzák az MFC-kódtár megfelelő verzióját a csatoláshoz a buildkörnyezetben meghatározott értékek alapján. Az MFC-fejlécfájlok fordítói irányelveket adnak hozzá, amelyek arra utasítják a hivatkozáskezelőt, hogy az MFC-kódtár egy adott verziójában csatolja a hivatkozást.
Például az AFX.H fejlécfájl arra utasítja a hivatkozáskezelőt, hogy az MFC teljes statikus, korlátozott statikus vagy megosztott DLL-verzióját kapcsolja be; ANSI/MBCS vagy Unicode verziót; és hibakeresési vagy kereskedelmi verziót, a build-konfigurációtól függően.
#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
Az MFC fejlécfájljai olyan irányelveket is tartalmaznak, amelyek összekapcsolják az összes szükséges könyvtárat, beleértve az MFC könyvtárakat, a Win32 könyvtárakat, az OLE könyvtárakat, a mintákból készült OLE könyvtárakat, az ODBC könyvtárakat stb.
ANSI, MBCS és Unicode
Az MFC ANSI/MBCS kódtár verziói támogatják az egybájtos karakterkészleteket, például az ASCII-t és a többbájtos karakterkészleteket, például a Shift-JIS-t. Az MFC Unicode-kódtár verziói az UTF-16LE széles karakterű kódolt formában támogatják a Unicode-ot. Használja az MFC ANSI/MBCS kódtár verzióit az UTF-8 kódolású Unicode-támogatáshoz.
Ha úgy szeretné beállítani a projektkonfigurációt, hogy egybájtos, többbájtos vagy széles karakterű Unicode-sztringet és karaktertámogatást használjon az IDE-ben, használja a Projekt tulajdonságai párbeszédpanelt. A Konfigurációs tulajdonságok>általános lapján állítsa a Karakterkészlet tulajdonságot Nem beállított értékre egy bájtos karakterkészlet használatára. Állítsa a tulajdonságot többbájtos karakterkészlet használatára, a Unicode karakterkészletet pedig az UTF-16 kódolású Unicode használatára.
Az MFC-projektek az előfeldolgozó szimbólumot _UNICODE használják az UTF-16 széles karakterű Unicode-támogatás jelzésére, és _MBCS az MBCS-támogatás jelzésére. Ezek a lehetőségek kölcsönösen kizárják egymást egy projektben.
MFC statikus kódtár elnevezési konvenciók
Az MFC statikus kódtárai az alábbi elnevezési konvenciókat használják. A kódtárnevek a következő formátumúak
uAFXcd. LIB
ahol a dőlt kisbetűkben megjelenő betűk helyőrzők a specifikátoroknak, amelyeknek a jelentése az alábbi táblázatban található.
| Kijelölő | Értékek és jelentéstartalmak |
|---|---|
| u | ANSI/MBCS (N) vagy Unicode (U); kihagyja az MFC-vezérlők nélküli verziót a párbeszédpaneleken |
| c | Verzió MFC-vezérlőkkel a párbeszédpaneleken (CW) vagy anélkül (NMCD) |
| d | Hibakeresés vagy kiadás: D=Hibakeresés; hagyja ki a jelölést a kiadáshoz |
A támogatott buildarchitektúrákhoz az \atlmfc\lib könyvtárban az alábbi táblázatban felsorolt összes kódtár előre fel van építve.
| Könyvtár | Leírás |
|---|---|
| NAFXCW. LIB | MFC Static-Link könyvtár, kiadási verzió |
| NAFXCWD. LIB | MFC Static-Link könyvtár, hibakeresési verzió |
| UAFXCW. LIB | MFC Static-Link Kódtár Unicode-támogatással, kiadási verzió |
| UAFXCWD. LIB | MFC Static-Link Kódtár Unicode-támogatással, hibakeresési verzió |
| AFXNMCD. LIB | MFC Static-Link kódtár MFC-párbeszédpanel-vezérlők nélkül, Kiadási verzió |
| AFXNMCDD. LIB | MFC Static-Link kódtár MFC-párbeszédpanel-vezérlők nélkül, hibakeresési verzió |
Az azonos alapnévvel és .pdb kiterjesztéssel rendelkező hibakereső fájlok az egyes statikus kódtárakhoz is elérhetők.
Megosztott MFC DLL-elnevezési konvenciók
Az MFC megosztott DLL-jeit egy strukturált elnevezési konvenció is követi. Így könnyebben megismerheti, hogy melyik DLL-t vagy tárat melyik célra érdemes használnia.
Az MFC DLL-ek verziószámokkal rendelkeznek, amelyek bináris kompatibilitást jeleznek. A projekten belüli kompatibilitás biztosításához használjon olyan MFC DLL-eket, amelyek verziója megegyezik a többi kódtárzal és fordítóeszközkészletével.
| DLL | Leírás |
|---|---|
| MFCversion.DLL | MFC DLL, ANSI vagy MBCS kiadási verzió |
| MFC-verzióU.DLL | MFC DLL, Unicode kiadási verzió |
| MFCversion.D.DLL | MFC DLL, ANSI vagy MBCS hibakeresési verzió |
| MFC-verzióUD.DLL | MFC DLL, Unicode hibakeresési verzió |
| MFCMversion.DLL | MFC DLL Windows Forms-vezérlőkkel, ANSI vagy MBCS kiadási verzió |
| MFCM-verziószámU.DLL | MFC DLL Windows Forms-vezérlőkkel, Unicode kiadási verzió |
| MFCM-verzióD.DLL | MFC DLL Windows Forms-vezérlőkkel, ANSI- vagy MBCS-hibakeresési verzióval |
| MFCM verzióUD.DLL | MFC DLL Windows Forms-vezérlőkkel, Unicode Hibakeresési verzió |
A megosztott DLL-eket használó alkalmazások vagy MFC-bővítmény DLL-ek létrehozásához szükséges importálási kódtárak alapneve megegyezik a DLL-sel, de .lib fájlnévkiterjesztéssel rendelkezik. A megosztott DLL-ek használatakor egy kis statikus kódtárat továbbra is hozzá kell kapcsolni a kódhoz; ez a kódtár neveMFCS-verzió{U}{D}.lib.
Ha dinamikusan kapcsolódik az MFC megosztott DLL-verziójához, függetlenül attól, hogy egy alkalmazásból vagy egy MFC-bővítmény DLL-éből származik, a termék üzembe helyezésekor tartalmaznia kell a megfelelőMFC-verziót.DLL vagy MFC-verziót U.DLL.
Az alkalmazásokkal terjeszthető Visual C++ DLL-ek listájáért tekintse meg a Microsoft Visual Studio 2017 és a Microsoft Visual Studio 2017 SDK terjeszthető kódját (beleértve a segédprogramokat és a BuildServer-fájlokat) vagy a Visual Studio 2019 terjeszthető kódját.
Az MFC MBCS- és Unicode-támogatásával kapcsolatos további információkért lásd a Unicode és a Többbájtos karakterkészlet (MBCS) támogatását.
Dinamikus csatolású kódtár támogatása
A statikus vagy megosztott dinamikus MFC-kódtárak használatával olyan DLL-eket hozhat létre, amelyeket az MFC és a nem MFC-végrehajthatók egyaránt használhatnak. Ezeket "normál DLL-eknek" vagy "normál MFC DLL-eknek" nevezzük, hogy megkülönböztessék őket az MFC-bővítmény DLL-ektől, amelyeket csak az MFC-alkalmazások és az MFC DLL-ek használhatnak. Az MFC statikus kódtárak használatával létrehozott DLL-t néha USRDLL-nek is nevezik a régebbi hivatkozásokban, mivel az MFC DLL-projektek definiálják az előfeldolgozó szimbólumot _USRDLL. Az MFC megosztott DLL-eket használó DLL-eket néha AFXDLL-nek is nevezik a régebbi hivatkozásokban, mivel ez határozza meg az előfeldolgozó szimbólumot _AFXDLL.
Ha a DLL-projektet az MFC statikus kódtárakhoz csatolással hozza létre, a DLL az MFC megosztott DLL-jei nélkül is üzembe helyezhető. Ha a DLL-projekt az MFCverzió.LIB vagy az MFCverzióU.LIB importáló könyvtárakra hivatkozik, akkor telepítenie kell a megfelelő MFC megosztott DLL-t, az MFCverzió.DLL-t vagy az MFCverzióU.DLL-t a DLL-lel együtt. További információ: DLL-ek.