Dynamische Verknüpfung ermöglicht das Laden einer Funktion aus einer DLL zur Laufzeit und erweitert so die Funktionalität von Ihr Programm. In diesem Artikel erfahren Sie, wie Sie dies erreichen.
Der erste Schritt besteht darin, die DLL in den Speicher des aktuellen Prozesses zu laden. Dies erfolgt mithilfe der LoadLibrary-Funktion:
HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
Sobald die DLL geladen ist, müssen Sie die Adresse der Funktion ermitteln, die Sie aufrufen möchten. Dazu verwenden wir die Funktion GetProcAddress:
typedef int (__stdcall *f_funci)(); f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Beachten Sie, dass Sie einen Funktionszeigertyp definieren müssen, der mit der Signatur der exportierten Funktion übereinstimmt. In unserem Fall handelt es sich um eine Funktion, die eine Ganzzahl zurückgibt und keine Argumente akzeptiert.
Damit die DLL erfolgreich geladen wird, müssen Sie die Funktion korrekt exportieren. Fügen Sie dem Quellcode Ihrer DLL Folgendes hinzu:
int __declspec(dllexport) __stdcall funci() { // ... }
Sobald die Adresse der Funktion erhalten wurde, können Sie sie wie jede andere Funktion aufrufen:
std::cout << "funci() returned " << funci() << std::endl;
Zur Ressourcenbereinigung empfiehlt es sich, das DLL-Handle freizugeben, wenn es nicht benötigt wird mehr:
FreeLibrary(hGetProcIDDLL);
Indem Sie diese Schritte befolgen, können Sie Funktionen von DLLs dynamisch laden und verwenden und so die Flexibilität und Erweiterbarkeit Ihres Programms erheblich verbessern.
Das obige ist der detaillierte Inhalt vonWie kann ich Funktionen aus einer DLL in C dynamisch laden und verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!