Mengimport Fungsi daripada DLL: Panduan Komprehensif
Memuatkan Dynamic Link Libraries (DLL) membolehkan program C anda menggunakan fungsi daripada perpustakaan kongsi luaran . Untuk mengakses fungsi dalam DLL, walau bagaimanapun, memerlukan pendekatan yang berbeza daripada mengimport fungsi daripada fail pengepala.
Memuatkan DLL dengan LoadLibrary
Fungsi LoadLibrary memuatkan DLL ke dalam ingatan proses semasa. Proses ini tidak mengimport secara automatik fungsi yang ditakrifkan dalam DLL.
Mendapatkan kembali Alamat Fungsi dengan GetProcAddress
Setelah DLL dimuatkan, anda perlu mendapatkan alamat fungsi yang anda ingin gunakan. Ini dilakukan menggunakan fungsi GetProcAddress.
#include <windows.h> typedef int (__stdcall *f_funci)(); // Define function pointer type int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("...") // Retrieve function address f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci"); }
Dalam coretan kod di atas, kami mentakrifkan jenis penuding fungsi yang dipanggil f_funci yang mewakili fungsi yang ingin kami import. Fungsi GetProcAddress mengembalikan alamat fungsi dalam DLL.
Mengeksport Fungsi daripada DLL
Untuk memastikan pengeksportan fungsi yang betul daripada DLL, gunakan __declspec( dllexport) dan atribut __stdcall.
int __declspec(dllexport) __stdcall funci() { // ... }
Atribut Atribut __declspec(dllexport) menunjukkan bahawa fungsi harus dieksport daripada DLL dan atribut __stdcall menentukan konvensyen panggilan yang digunakan oleh DLL.
Melepaskan Pemegang DLL
Selepas menggunakan fungsi yang diimport daripada DLL, adalah amalan yang baik untuk melepaskan pemegang ke perpustakaan. Ini dicapai menggunakan fungsi FreeLibrary.
FreeLibrary(hGetProcIDDLL);
Dengan mengikuti langkah ini, anda boleh memuatkan DLL secara dinamik dan mengakses fungsinya dalam C . Teknik ini memberi kuasa kepada anda untuk melanjutkan keupayaan program anda dengan menggunakan modul boleh guna semula tanpa memerlukan pemautan statik atau penyusunan semula.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengimport dan Menggunakan Fungsi daripada DLL dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!