Bagikan melalui


Versi Pustaka MFC

Pustaka MFC tersedia dalam versi yang mendukung kode ANSI byte-tunggal dan kumpulan karakter multibyte (MBCS), serta versi yang mendukung Unicode yang dikodekan dalam 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 (.exe file) 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.

Penghubungan otomatis versi perpustakaan MFC

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

Misalnya, file header AFX.H menginstruksikan linker untuk menautkan versi DLL statis penuh, statis terbatas, atau berbagi bersama dari MFC; versi ANSI/MBCS atau Unicode; dan versi debug atau 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 karakter lebar yang dikodekan dengan UTF-16LE. Gunakan versi pustaka ANSI/MBCS dari MFC untuk dukungan Unicode berformat 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 halamanUmum> 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 format

uCdAFX. LIB

di mana huruf yang ditunjukkan dalam huruf kecil miring adalah penampung tempat untuk spesifikator 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; jangan sertakan penentu untuk Rilis

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

Perpustakaan Deskripsi
NAFXCW. LIB Perpustakaan MFC Static-Link, Versi rilis
NAFXCWD. LIB Pustaka MFC Static-Link, versi debug
UAFXCW. LIB Pustaka Static-Link MFC dengan dukungan Unicode, Versi rilis
UAFXCWD. LIB Pustaka MFC Static-Link dengan dukungan Unicode, versi Debug
AFXNMCD. LIB Pustaka MFC Static-Link versi rilis tanpa kontrol dialog MFC
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 yang dibagikan 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
MFCversi.DLL Versi Rilis MFC DLL, ANSI, atau MBCS
MFCversiU.DLL MFC DLL, rilis versi Unicode
MFCversiD.DLL Versi MFC DLL, ANSI, atau MBCS Debug
versiMFC UD.DLL MFC DLL, versi Debug Unicode
Versi MFCM.DLL MFC DLL dengan kontrol Formulir Windows, versi Rilis ANSI atau MBCS
MFCMversiU.DLL DLL MFC dengan kontrol Windows Forms, versi Rilis Unicode
MFCMVersiD.DLL DLL MFC dengan kontrol Windows Forms, versi debug ANSI atau MBCS
MFCMVersiUD.DLL DLL MFC dengan kontrol Windows Forms, 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 bernamaversi MFCS{U}{D}.lib.

Jika Anda secara dinamis menautkan ke versi DLL bersama MFC, baik itu dari aplikasi atau dari DLL ekstensi MFC, Anda harus menyertakan MFCversi.DLL atau MFCversiU.DLL saat 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 statis atau dinamis bersama untuk membuat DLL yang dapat dieksekusi oleh aplikasi MFC dan non-MFC. 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 kadang-kadang 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 diimplementasikan tanpa DLL bersama MFC. Saat proyek DLL Anda ditautkan ke pustaka impor MFCversion.LIB atau MFCversionU.LIB, Anda harus menyebarkan DLL MFC berbagi yang sesuai, yaitu MFCversion.DLL atau MFCversionU.DLL, bersamaan dengan DLL Anda. Untuk informasi selengkapnya, lihat DLL.

Lihat juga

Topik MFC Umum