Aracılığıyla paylaş


MFC Kitaplığı 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 header dosyası, bağlayıcıya, derleme yapılandırmanıza bağlı olarak MFC'nin tam statik, sınırlı statik veya paylaşılan DLL sürümünü; ANSI/MBCS veya Unicode sürümünü; ve hata ayıklama veya perakende sürümünü bağlaması için talimat verir.

#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ı belirli bir formda olur.

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:

Belirticisi Değerler ve anlamlar
u ANSI/MBCS (N) veya Unicode (U); iletişim kutularında MFC denetimleri bulunmayan sürüm için hariç tut
c Diyalog kutularında MFC denetimlerini içeren (CW) veya içermeyen (NMCD) sürüm
d Hata Ayıklama veya Yayın: D=Hata Ayıklama; Yayın için tanımlayıcıyı atlayın

Aşağıdaki tabloda listelenen tüm kitaplıklar desteklenen derleme mimarileri için \atlmfc\lib dizininde önceden oluşturulmuş olarak bulunur.

Kütüphane Açıklama
NAFXCW. LİB MFC Static-Link Kitaplığı, Sürüm sürümü
NAFXCWD. LİB MFC Static-Link Kitaplığı, Hata Ayıklama sürümü
UAFXCW. LİB Unicode desteğine sahip MFC Static-Link Kitaplığı, Sürüm sürümü
UAFXCWD. LİB Unicode desteğine sahip MFC Static-Link Kitaplığı, Hata ayıklama sürümü
AFXNMCD. LİB MFC iletişim kutusu denetimleri olmayan MFC Static-Link Kitaplığı, Sürüm sürümü
AFXNMCDD. LİB MFC iletişim kutusu denetimleri olmadan MFC Static-Link Kütüphanesi, 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'nin 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 Açıklama
MFCsürümü.DLL MFC DLL, ANSI veya MBCS Çıkış sürümü
MFCsürümU.DLL MFC DLL, Unicode Sürüm sürümü
MFCsürümD.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ü
MFCMsürümü.DLL MFC DLL, Windows Forms denetimleri, ANSI veya MBCS Sürümü
MFCMsürümU.DLL Windows Forms denetimleriyle MFC DLL, Unicode Sürüm sürümü
MFCMsürümD.DLL MFC DLL, Windows Forms denetimleri içeren ANSI veya MBCS Hata Ayıklama sürümü.
MFCMsürümUD.DLL Windows Forms denetimlerine sahip MFC DLL, Unicode Hata Ayıklama versiyonu

Bu paylaşılan DLL'leri kullanan uygulamaları veya MFC uzantısı DLL'lerini oluşturmak için gereken import kütüphaneleri, DLL ile aynı temel ada sahiptir, ancak dosya adı uzantısı .lib'dir. 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.

İster bir uygulamadan ister MFC uzantı DLL'sinden olsun MFC'nin paylaşılan DLL sürümüne dinamik olarak bağlanıyorsanız, ürününüzü dağıtırken eşleşen MFCsürümünü.DLL veya MFCsürümünüU.DLL 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.

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 _USRDLL önişlemci sembolünü tanımladığından, MFC statik kitaplıkları kullanılarak oluşturulan dll bazen eski başvurularda USRDLL olarak adlandırılır. MFC paylaşılan DLL'lerini kullanan 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 MFCsürüm.LIB veya MFCsürümU.LIB ithalat kitaplıklarına bağlandığında, eşleşen MFC paylaşılan DLL'yi, MFCsürüm.DLL veya MFCsürümU.DLL olarak DLL'nizle birlikte dağıtmanız gerekir. Daha fazla bilgi için bkz. DLL'ler.

Ayrıca bakınız

Genel MFC Konuları