DLL MFC Reguler Secara Statis Ditautkan ke MFC
DLL MFC reguler yang secara statis ditautkan ke MFC adalah DLL yang menggunakan MFC secara internal, dan fungsi yang diekspor di DLL dapat dipanggil oleh MFC atau non-MFC yang dapat dieksekusi. Seperti namanya, DLL semacam ini dibangun menggunakan versi pustaka tautan statis MFC. Fungsi biasanya diekspor dari DLL MFC reguler menggunakan antarmuka C standar. Untuk contoh cara menulis, membangun, dan menggunakan DLL MFC reguler, lihat sampel DLLScreenCap.
Perhatikan bahwa istilah USRDLL tidak lagi digunakan dalam dokumentasi Visual C++. DLL MFC reguler yang secara statis ditautkan ke MFC memiliki karakteristik yang sama dengan USRDLL sebelumnya.
DLL MFC reguler, yang secara statis ditautkan ke MFC, memiliki fitur-fitur berikut:
Klien yang dapat dieksekusi dapat ditulis dalam bahasa apa pun yang mendukung penggunaan DLL (C, C++, Pascal, Visual Basic, dan sebagainya); tidak harus menjadi aplikasi MFC.
DLL dapat menautkan ke pustaka tautan statis MFC yang sama yang digunakan oleh aplikasi. Tidak ada lagi versi terpisah dari pustaka tautan statis untuk DLL.
Sebelum MFC versi 4.0, USRDLL menyediakan jenis fungsionalitas yang sama dengan DLL MFC reguler yang secara statis ditautkan ke MFC. Pada Visual C++ versi 4.0, istilah USRDLL sudah usang.
DLL MFC reguler, yang secara statis ditautkan ke MFC, memiliki persyaratan berikut:
Jenis DLL ini harus membuat instans kelas yang berasal dari
CWinApp
.Jenis DLL ini menggunakan yang
DllMain
disediakan oleh MFC. Tempatkan semua kode inisialisasi khusus DLL dalamInitInstance
fungsi anggota dan kode penghentian seperti dalamExitInstance
aplikasi MFC normal.Meskipun istilah USRDLL usang, Anda masih harus menentukan "_USRDLL" pada baris perintah kompilator. Definisi ini menentukan deklarasi mana yang ditarik dari file header MFC.
DLL MFC reguler harus memiliki CWinApp
kelas -turunan dan satu objek dari kelas aplikasi tersebut, seperti halnya aplikasi MFC. Namun, CWinApp
objek DLL tidak memiliki pompa pesan utama, seperti halnya CWinApp
objek aplikasi.
Perhatikan bahwa CWinApp::Run
mekanisme tidak berlaku untuk DLL, karena aplikasi memiliki pompa pesan utama. Jika DLL membuka dialog modeless atau memiliki jendela bingkai utama sendiri, pompa pesan utama aplikasi harus memanggil rutinitas yang diekspor oleh DLL yang pada gilirannya memanggil CWinApp::PreTranslateMessage
fungsi anggota objek aplikasi DLL.
Untuk contoh fungsi ini, lihat sampel DLLScreenCap.
Simbol biasanya diekspor dari DLL MFC biasa menggunakan antarmuka C standar. Deklarasi fungsi yang diekspor dari DLL MFC biasa akan terlihat seperti ini:
extern "C" __declspec(dllexport) MyExportedFunction( );
Semua alokasi memori dalam DLL MFC reguler harus tetap berada dalam DLL; DLL tidak boleh meneruskan atau menerima dari panggilan yang dapat dieksekusi salah satu hal berikut:
Penunjuk ke objek MFC
Pointer ke memori yang dialokasikan oleh MFC
Jika Anda perlu melakukan salah satu hal di atas atau perlu meneruskan objek turunan MFC antara panggilan yang dapat dieksekusi dan DLL, Anda harus membangun DLL ekstensi MFC.
Aman untuk meneruskan pointer ke memori yang dialokasikan oleh pustaka run-time C antara aplikasi dan DLL hanya jika Anda membuat salinan data. Anda tidak boleh menghapus atau mengubah ukuran pointer ini atau menggunakannya tanpa membuat salinan memori.
DLL yang secara statis ditautkan ke MFC juga tidak dapat ditautkan secara dinamis ke DLL MFC bersama. DLL yang secara statis ditautkan ke MFC secara dinamis terikat ke aplikasi seperti DLL lainnya; aplikasi menautkannya sama seperti DLL lainnya.
Pustaka tautan statis MFC standar dinamai sesuai dengan konvensi yang dijelaskan dalam Konvensi Penamaan untuk DLL MFC. Namun, dengan MFC versi 3.0 dan yang lebih baru, tidak perlu lagi menentukan secara manual ke linker versi pustaka MFC yang ingin Anda tautkan. Sebagai gantinya, file header MFC secara otomatis menentukan versi pustaka MFC yang benar untuk ditautkan berdasarkan pendefinisian pra-prosesor, seperti _DEBUG atau _UNICODE. File header MFC menambahkan arahan /DEFAULTLIB yang menginstruksikan linker untuk ditautkan dalam versi tertentu dari pustaka MFC.
Apa yang ingin Anda lakukan?
Apa yang ingin Anda ketahui lebih lanjut?
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk