Funktionen aus DLLs dynamisch laden
Frage:
Wie kann das LoadLibrary-Handle verwendet werden? um auf in einer DLL definierte Funktionen zuzugreifen?
LoadLibrary lädt a DLL in den Speicher, importiert ihre Funktionen jedoch nicht automatisch. Dazu ist eine zweite WinAPI-Funktion erforderlich: GetProcAddress.
Beispiel:
#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; }
Dll-Export:
Funktion sicherstellen wird mithilfe von __declspec(dllexport) und __stdcall korrekt aus der DLL exportiert Attribute:
int __declspec(dllexport) __stdcall funci() { // ... }
Das obige ist der detaillierte Inhalt vonWie greife ich mit LoadLibrary und GetProcAddress auf DLL-Funktionen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!