Soalan:
Anda telah mencipta DLL dengan fungsi bernama funci( ) dan sedang cuba memuatkan dan mengakses fungsi ini daripada C . Walau bagaimanapun, anda menghadapi ralat "'funci' tidak diisytiharkan dalam skop ini." Bagaimanakah anda boleh menggunakan penuding DLL untuk mengakses fungsi?
Jawapan:
Langkah 1: Muatkan DLL
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\path\to\test.dll");
Ini memuatkan DLL ke dalam proses memori.
Langkah 2: Selesaikan Alamat Fungsi
Anda perlu mendapatkan alamat fungsi menggunakan GetProcAddress.
typedef int (__stdcall *f_funci)(); // Define function pointer f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Langkah 3 : Sahkan Alamat Fungsi
Semak sama ada alamat fungsi diperoleh berjaya.
if (!funci) { std::cout << "Could not locate the function" << std::endl; return EXIT_FAILURE; }
Langkah 4: Panggil Fungsi
Setelah anda mempunyai penunjuk fungsi, anda boleh memanggilnya.
std::cout << "funci() returned " << funci() << std::endl;
Langkah 5: Membebaskan DLL (Pilihan)
Lepaskan Pemegang DLL menggunakan FreeLibrary() untuk memunggah DLL daripada memori.
FreeLibrary(hGetProcIDDLL);
Petua Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Memuatkan dan Memanggil Fungsi secara Dinamik daripada DLL dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!