Bagikan melalui


Versi Pustaka MFC

Pustaka MFC tersedia dalam versi yang mendukung kode ansi byte tunggal dan set karakter multibyte (MBCS), serta versi yang mendukung Unicode (dikodekan sebagai UTF-16LE, kumpulan karakter asli Windows). Setiap versi MFC tersedia sebagai pustaka statis atau sebagai DLL bersama. Ada juga versi pustaka statis MFC yang lebih kecil yang meninggalkan kontrol MFC untuk dialog, untuk aplikasi yang sangat sensitif terhadap ukuran dan tidak memerlukan kontrol tersebut. Pustaka MFC tersedia dalam versi debug dan rilis untuk arsitektur yang didukung yang mencakup prosesor x86, x64, dan ARM. Anda dapat membuat aplikasi (file.exe) dan DLL dengan versi pustaka MFC apa pun. Ada juga sekumpulan pustaka MFC yang dikompilasi untuk berinteraksi dengan kode terkelola. DLL bersama MFC menyertakan nomor versi untuk menunjukkan kompatibilitas biner pustaka.

Penautan otomatis versi pustaka MFC

File header MFC secara otomatis menentukan versi pustaka MFC yang benar untuk ditautkan, berdasarkan nilai yang ditentukan di lingkungan build Anda. File header MFC menambahkan direktif kompilator yang menginstruksikan linker untuk ditautkan dalam versi tertentu dari pustaka MFC.

Misalnya, AFX. File header H menginstruksikan linker untuk ditautkan dalam versi DLL statis, terbatas, atau bersama penuh dari MFC; VERSI ANSI/MBCS atau Unicode; dan debug atau versi ritel, tergantung pada konfigurasi build Anda:

#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

File header MFC juga menyertakan arahan untuk ditautkan di semua pustaka yang diperlukan, termasuk pustaka MFC, pustaka Win32, pustaka OLE, pustaka OLE yang dibangun dari sampel, pustaka ODBC, dan sebagainya.

ANSI, MBCS, dan Unicode

Versi pustaka MFC ANSI/MBCS mendukung kumpulan karakter byte tunggal seperti ASCII, dan set karakter multibyte seperti Shift-JIS. Versi pustaka MFC Unicode mendukung Unicode dalam bentuk yang dikodekan karakter lebar UTF-16LE. Gunakan MFC versi pustaka ANSI/MBCS untuk dukungan Unicode yang dikodekan UTF-8.

Untuk mengatur konfigurasi proyek Anda agar menggunakan byte tunggal, multibyte, atau karakter luas string Unicode dan dukungan karakter di IDE, gunakan dialog Properti Proyek. Di halaman Umum Properti>Konfigurasi, atur properti Set Karakter ke Tidak Diatur untuk menggunakan kumpulan karakter byte tunggal. Atur properti ke Gunakan Set Karakter Multi-Byte untuk menggunakan set karakter multibyte, atau menggunakan Unicode Character Set untuk menggunakan Unicode yang dikodekan sebagai UTF-16.

Proyek MFC menggunakan simbol prapemrosesan _UNICODE untuk menunjukkan dukungan Unicode karakter lebar UTF-16, dan _MBCS untuk menunjukkan dukungan MBCS. Opsi ini saling eksklusif dalam proyek.

Konvensi penamaan pustaka statis MFC

Pustaka statis untuk MFC menggunakan konvensi penamaan berikut. Nama pustaka memiliki formulir

uAFXcd. LIB

di mana huruf yang ditunjukkan dalam huruf kecil miring adalah tempat penampung untuk penentu yang maknanya diperlihatkan dalam tabel berikut:

Penentu Nilai dan arti
u ANSI/MBCS (N) atau Unicode (U); hilangkan untuk versi tanpa kontrol MFC dalam dialog
c Versi dengan kontrol MFC dalam dialog (CW) atau tanpa (NMCD)
d Debug atau Rilis: D=Debug; hilangkan penentu untuk Rilis

Semua pustaka yang tercantum dalam tabel berikut disertakan bawaan dalam direktori \atlmfc\lib untuk arsitektur build yang didukung.

Pustaka Deskripsi
NAFXCW. LIB Pustaka Static-Link MFC, Versi rilis
NAFXCWD. LIB Pustaka Static-Link MFC, Versi debug
UAFXCW. LIB Pustaka Static-Link MFC dengan dukungan Unicode, Versi rilis
UAFXCWD. LIB Pustaka Static-Link MFC dengan dukungan Unicode, versi Debug
AFXNMCD. LIB Pustaka Static-Link MFC tanpa kontrol dialog MFC, Versi rilis
AFXNMCDD. LIB Pustaka Static-Link MFC tanpa kontrol dialog MFC, versi Debug

File debugger yang memiliki nama dasar yang sama dan ekstensi .pdb juga tersedia untuk setiap pustaka statis.

Konvensi penamaan DLL bersama MFC

DLL bersama MFC juga mengikuti konvensi penamaan terstruktur. Ini membuatnya lebih mudah untuk mengetahui DLL atau pustaka mana yang harus Anda gunakan untuk tujuan mana.

DLL MFC memiliki nomor versi yang menunjukkan kompatibilitas biner. Gunakan DLL MFC yang memiliki versi yang sama dengan pustaka dan toolset kompilator Anda yang lain untuk menjamin kompatibilitas dalam proyek.

DLL Deskripsi
MFCversion.DLL Versi Rilis MFC DLL, ANSI, atau MBCS
MFCversiU.DLL MFC DLL, versi Rilis Unicode
D.DLL versiMFC Versi MFC DLL, ANSI, atau MBCS Debug
MFCversiUD.DLL MFC DLL, versi Debug Unicode
MFCMversion.DLL MFC DLL dengan kontrol Formulir Windows, versi Rilis ANSI atau MBCS
MFCMversiU.DLL MFC DLL dengan kontrol Formulir Windows, versi Rilis Unicode
D.DLL versiMFCM MFC DLL dengan kontrol Formulir Windows, ansi atau versi MBCS Debug
MFCMversiUD.DLL DLL MFC dengan kontrol Formulir Windows, versi Debug Unicode

Pustaka impor yang diperlukan untuk membangun aplikasi atau DLL ekstensi MFC yang menggunakan DLL bersama ini memiliki nama dasar yang sama dengan DLL tetapi memiliki ekstensi nama file .lib. Saat Anda menggunakan DLL bersama, pustaka statis kecil masih harus ditautkan dengan kode Anda; pustaka ini bernama versi MFCS{U}{D}.lib.

Jika Anda secara dinamis menautkan ke MFC versi DLL bersama, apakah itu dari aplikasi atau dari DLL ekstensi MFC, Anda harus menyertakan versi MFCyang cocok.DLL atau U.DLL versiMFCsaat Anda menyebarkan produk Anda.

Untuk daftar DLL Visual C++ yang dapat didistribusikan dengan aplikasi Anda, lihat Kode yang Dapat Didistribusikan untuk SDK Microsoft Visual Studio 2017 dan Microsoft Visual Studio 2017 (Termasuk Utilitas dan File BuildServer) atau Kode Yang Dapat Didistribusikan untuk Visual Studio 2019.

Untuk informasi selengkapnya tentang dukungan MBCS dan Unicode di MFC, lihat Dukungan Unicode dan Multibyte Character Set (MBCS).

Anda dapat menggunakan pustaka MFC dinamis statis atau bersama untuk membuat DLL yang dapat digunakan oleh MFC dan non-MFC yang dapat dieksekusi. Ini disebut "DLL reguler" atau "DLL MFC reguler", untuk membedakannya dari DLL ekstensi MFC yang hanya dapat digunakan oleh aplikasi MFC dan DLL MFC. DLL yang dibangun dengan menggunakan pustaka statis MFC terkadang disebut USRDLL dalam referensi yang lebih lama, karena proyek DLL MFC menentukan simbol pra-prosesor _USRDLL. DLL yang menggunakan DLL bersama MFC terkadang disebut AFXDLL dalam referensi yang lebih lama, karena mendefinisikan simbol pra-prosesor _AFXDLL.

Saat Anda membuat proyek DLL dengan menautkan ke pustaka statis MFC, DLL Anda dapat disebarkan tanpa DLL bersama MFC. Saat proyek DLL Anda ditautkan ke versi MFCpustaka impor. LIB atau MFCversiU.LIB, Anda harus menyebarkan DLL MFC bersama MFCyang cocok versi.DLL atau MFCversiU.DLL bersama dengan DLL Anda. Untuk informasi selengkapnya, lihat DLL.

Baca juga

Topik MFC Umum