Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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).
Dukungan pustaka tautan dinamis (DLL)
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.