Pautan dinamik membolehkan anda memuatkan fungsi daripada DLL semasa masa jalan, memanjangkan fungsi program anda. Artikel ini akan membimbing anda tentang cara untuk mencapainya.
Langkah pertama ialah memuatkan DLL ke dalam memori proses semasa. Ini dilakukan menggunakan fungsi LoadLibrary:
HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
Setelah DLL dimuatkan, anda perlu mencari alamat fungsi yang ingin anda panggil. Untuk ini, kami menggunakan fungsi GetProcAddress:
typedef int (__stdcall *f_funci)(); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Perhatikan bahawa anda perlu menentukan jenis penuding fungsi yang sepadan dengan tandatangan fungsi yang dieksport. Dalam kes kami, ia adalah fungsi yang mengembalikan integer dan tidak mengambil hujah.
Untuk DLL berjaya dimuatkan, anda perlu mengeksport fungsi dengan betul. Tambahkan yang berikut pada kod sumber DLL anda:
int __declspec(dllexport) __stdcall funci() { // ... }
Setelah alamat fungsi diperoleh, anda boleh memanggilnya seperti fungsi lain:
std::cout << "funci() returned " << funci() << std::endl;
Untuk pembersihan sumber, adalah amalan yang baik untuk melepaskan pemegang DLL apabila tidak diperlukan lagi:
FreeLibrary(hGetProcIDDLL);
Dengan mengikuti langkah-langkah ini, anda boleh memuatkan dan menggunakan fungsi daripada DLL secara dinamik, meningkatkan fleksibiliti dan kebolehlanjutan program anda dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Fungsi Secara Dinamik daripada DLL dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!