MFC Kitaplık Sürümleri
MFC Kitaplığı, ANSI tek baytlı ve çok baytlı karakter kümesi (MBCS) kodunu destekleyen sürümlerin yanı sıra Unicode (UTF-16LE olarak kodlanmış, Windows'un yerel karakter kümesi) sürümlerini destekleyen sürümlerde kullanılabilir. Her MFC sürümü statik kitaplık veya paylaşılan DLL olarak kullanılabilir. Boyutuna çok duyarlı olan ve bu denetimlere gerek duymayan uygulamalar için iletişim kutuları için MFC denetimlerini dışarıda bırakan daha küçük bir MFC statik kitaplık sürümü de vardır. MFC kitaplıkları x86, x64 ve ARM işlemcileri içeren desteklenen mimariler için hem hata ayıklama hem de sürüm sürümlerinde kullanılabilir. MFC kitaplıklarının herhangi bir sürümüyle hem uygulamalar (.exe dosyaları) hem de DLL'ler oluşturabilirsiniz. Yönetilen kodla birlikte çalışmak için derlenmiş bir MFC kitaplıkları kümesi de vardır. MFC paylaşılan DLL'leri, kitaplık ikili uyumluluğunu belirtmek için bir sürüm numarası içerir.
MFC kitaplık sürümlerini otomatik bağlama
MFC üst bilgi dosyaları, derleme ortamınızda tanımlanan değerlere göre bağlanılacak MFC kitaplığının doğru sürümünü otomatik olarak belirler. MFC üst bilgi dosyaları, bağlayıcıya MFC kitaplığının belirli bir sürümünde bağlanmasını belirten derleyici yönergeleri ekler.
Örneğin, AFX. H üst bilgi dosyası, bağlayıcıya MFC'nin tam statik, sınırlı statik veya paylaşılan DLL sürümünde bağlanmasını ister; ANSI/MBCS veya Unicode sürümü; ve derleme yapılandırmanıza bağlı olarak hata ayıklama veya perakende sürümü:
#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 üst bilgi dosyaları MFC kitaplıkları, Win32 kitaplıkları, OLE kitaplıkları, örneklerden oluşturulan OLE kitaplıkları, ODBC kitaplıkları vb. dahil olmak üzere tüm gerekli kitaplıklarda bağlantı kurulacak yönergeleri de içerir.
ANSI, MBCS ve Unicode
MFC ANSI/MBCS kitaplık sürümleri hem ASCII gibi tek baytlı karakter kümelerini hem de Shift-JIS gibi çok baytlı karakter kümelerini destekler. MFC Unicode kitaplık sürümleri, UTF-16LE geniş karakter kodlanmış biçiminde Unicode'u destekler. UTF-8 kodlanmış Unicode desteği için MFC'nin ANSI/MBCS kitaplık sürümlerini kullanın.
Proje yapılandırmanızı IDE'de tek bayt, çok baytlı veya geniş karakterli Unicode dizesi ve karakter desteği kullanacak şekilde ayarlamak için Proje Özellikleri iletişim kutusunu kullanın. Yapılandırma Özellikleri>Genel sayfasında, Tek baytlık bir karakter kümesi kullanmak için Karakter Kümesi özelliğini Ayarlanmadı olarak ayarlayın. Çok baytlı karakter kümesi kullanmak için Çok Baytlı Karakter Kümesi Kullan veya UTF-16 olarak kodlanmış Unicode kullanmak için Unicode Karakter Kümesi Kullan özelliğini ayarlayın.
MFC projeleri, UTF-16 geniş karakterli Unicode desteğini belirtmek için ön işlemci sembolünü _UNICODE ve MBCS desteğini belirtmek için _MBCS kullanır. Bu seçenekler bir projede birbirini dışlar.
MFC statik kitaplık adlandırma kuralları
MFC için statik kitaplıklar aşağıdaki adlandırma kurallarını kullanır. Kitaplık adlarının formu vardır
uAFXcd. LİB
burada italik küçük harfle gösterilen harfler, anlamları aşağıdaki tabloda gösterilen tanımlayıcılar için yer tutuculardır:
Belirleyici | Değerler ve anlamlar |
---|---|
U | ANSI/MBCS (N) veya Unicode (U); İletişim kutularındaki MFC denetimleri olmayan sürüm için atla |
C | İletişim kutularındaki (CW) veya içermeyen (NMCD) MFC denetimlerine sahip sürüm |
d | Hata Ayıklama veya Sürüm: D=Hata Ayıklama; Release için atla tanımlayıcısı |
Aşağıdaki tabloda listelenen tüm kitaplıklar desteklenen derleme mimarileri için \atlmfc\lib dizininde önceden oluşturulmuş olarak bulunur.
Kitaplık | Tanım |
---|---|
NAFXCW.LIB | MFC Static-Link Kitaplığı, Sürüm sürümü |
NAFXCWD.LIB | MFC Statik Bağlantı Kitaplığı, Hata Ayıklama sürümü |
UAFXCW. LİB | Unicode desteğine sahip MFC Statik Bağlantı Kitaplığı, Sürüm sürümü |
UAFXCWD. LİB | Unicode desteğine sahip MFC Statik Bağlantı Kitaplığı, Hata ayıklama sürümü |
AFXNMCD. LİB | MFC iletişim kutusu denetimleri olmadan MFC Statik Bağlantı Kitaplığı, Sürüm sürümü |
AFXNMCDD. LİB | MFC iletişim kutusu denetimleri olmadan MFC Statik Bağlantı Kitaplığı, Hata ayıklama sürümü |
Statik kitaplıkların her biri için aynı temel ada ve .pdb uzantısına sahip hata ayıklayıcı dosyaları da kullanılabilir.
MFC paylaşılan DLL adlandırma kuralları
MFC paylaşılan DLL'leri de yapılandırılmış bir adlandırma kuralına uyar. Bu, hangi DLL veya kitaplığı hangi amaçla kullanmanız gerektiğini öğrenmenizi kolaylaştırır.
MFC DLL'leri, ikili uyumluluğu gösteren sürüm numaralarına sahiptir. Proje içinde uyumluluğu garanti etmek için diğer kitaplıklarınızla ve derleyici araç takımınızla aynı sürüme sahip MFC DLL'lerini kullanın.
DLL | Tanım |
---|---|
MFCversion.DLL | MFC DLL, ANSI veya MBCS Sürüm sürümü |
MFCsürümüU.DLL | MFC DLL, Unicode Sürüm sürümü |
MFCsürümüD.DLL | MFC DLL, ANSI veya MBCS Hata Ayıklama sürümü |
MFCsürümUD.DLL | MFC DLL, Unicode Hata Ayıklama sürümü |
MFCMversion.DLL | Windows Forms denetimleri, ANSI veya MBCS Sürüm sürümü ile MFC DLL |
MFCMsürümüU.DLL | Windows Forms denetimleriyle MFC DLL, Unicode Sürüm sürümü |
MFCMsürümüD.DLL | Windows Forms denetimleri, ANSI veya MBCS Hata Ayıklama sürümü ile MFC DLL |
MFCMsürümUD.DLL | Windows Forms denetimleriyle MFC DLL, Unicode Hata Ayıklama sürümü |
Bu paylaşılan DLL'leri kullanan uygulamalar veya MFC uzantısı DLL'leri oluşturmak için gereken içeri aktarma kitaplıkları DLL ile aynı temel ada sahiptir, ancak bir .lib dosya adı uzantısına sahiptir. Paylaşılan DLL'leri kullandığınızda, küçük bir statik kitaplığın hala kodunuzla bağlantılı olması gerekir; bu kitaplığa MFCSsürümü{U}{D}.lib adı verilmiştir.
MFC'nin paylaşılan DLL sürümüne dinamik olarak bağlanıyorsanız, bir uygulamadan veya MFC uzantı DLL'sinden geliyorsa, ürününüzü dağıtırken eşleşen MFCsürümü.DLL veya MFCsürümüU.DLL'yi eklemeniz gerekir.
Uygulamalarınızla dağıtabileceğiniz Visual C++ DLL'lerinin listesi için bkz . Microsoft Visual Studio 2017 ve Microsoft Visual Studio 2017 SDK'sı (Yardımcı Programlar ve BuildServer Dosyaları içerir) için Dağıtılabilir Kod veya Visual Studio 2019 için Dağıtılabilir Kod.
MFC'de MBCS ve Unicode desteği hakkında daha fazla bilgi için bkz . Unicode ve Çok Baytlı Karakter Kümesi (MBCS) Desteği.
Dinamik bağlantı kitaplığı desteği
Hem MFC hem de MFC olmayan yürütülebilir dosyalar tarafından kullanılabilecek DLL'ler oluşturmak için statik veya paylaşılan dinamik MFC kitaplıklarını kullanabilirsiniz. Bunlar yalnızca MFC uygulamaları ve MFC DLL'leri tarafından kullanılabilen MFC uzantısı DLL'lerinden ayırt etmek için "normal DLL'ler" veya "normal MFC DLL'leri" olarak adlandırılır. MFC DLL projeleri ön işlemci sembolünü _USRDLL tanımladığından, MFC statik kitaplıkları kullanılarak oluşturulan DLL'ler eski başvurularda bazen USRDLL olarak adlandırılır. MFC paylaşılan DLL'lerini kullanan bir DLL bazen eski başvurularda AFXDLL olarak adlandırılır çünkü ön işlemci sembolünü _AFXDLL tanımlar.
MFC statik kitaplıklarına bağlanarak DLL projenizi oluşturduğunuzda, DLL'niz MFC paylaşılan DLL'leri olmadan dağıtılabilir. DLL projeniz içeri aktarma kitaplıkları MFCsürümüne bağlandığında. LIB veya MFCsürümüU.LIB, eşleşen MFC paylaşılan DLL MFC sürümü.DLL veya MFCsürümüU.DLL'yi DLL'nizle birlikte dağıtmanız gerekir. Daha fazla bilgi için bkz . DLL'ler.