Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengakses Fungsi DLL Menggunakan LoadLibrary dan GetProcAddress?
Fungsi Pemuatan Secara Dinamik daripada DLL
Soalan:
Bagaimanakah pemegang LoadLibrary boleh digunakan untuk mengakses fungsi yang ditakrifkan dalam a DLL?
LoadLibrary memuatkan DLL ke dalam memori tetapi tidak mengimport fungsinya secara automatik. Ini memerlukan fungsi WinAPI kedua: GetProcAddress.
Contoh:
#include <windows.h> #include <iostream> typedef int (__stdcall *f_funci)(); int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("C:\Documents and Settings\User\Desktop\test.dll"); if (!hGetProcIDDLL) { std::cout << "could not load the dynamic library" << std::endl; return EXIT_FAILURE; } // Resolve function address using GetProcAddress f_funci funci = (f_funci) GetProcAddress(hGetProcIDDLL, "funci"); if (!funci) { std::cout << "could not locate the function" << std::endl; return EXIT_FAILURE; } std::cout << "funci() returned " << funci() << std::endl; // Free the library handle when no longer needed FreeLibrary(hGetProcIDDLL); return EXIT_SUCCESS; }
Eksport Dll:
Pastikan fungsi dieksport dengan betul daripada DLL menggunakan __declspec(dllexport) dan __stdcall atribut:
int __declspec(dllexport) __stdcall funci() { // ... }
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Fungsi DLL Menggunakan LoadLibrary dan GetProcAddress?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!