Megosztás:


MFC-kódtár verziói

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.

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.

Lásd még

Általános MFC-témakörök