Heim > Backend-Entwicklung > C++ > Wie kann ich Funktionen aus einer DLL in C dynamisch laden und verwenden?

Wie kann ich Funktionen aus einer DLL in C dynamisch laden und verwenden?

Susan Sarandon
Freigeben: 2024-12-20 14:28:10
Original
415 Leute haben es durchsucht

How Can I Dynamically Load and Use Functions from a DLL in C  ?

Eine Funktion dynamisch aus einer DLL laden

Einführung

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.

Laden der DLL

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");
Nach dem Login kopieren

Abrufen der Funktionsadresse

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");
Nach dem Login kopieren

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.

Funktion aus DLL exportieren

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() {
  // ...
}
Nach dem Login kopieren

Verwenden der Funktion

Sobald die Adresse der Funktion erhalten wurde, können Sie sie wie jede andere Funktion aufrufen:

std::cout << "funci() returned " << funci() << std::endl;
Nach dem Login kopieren

DLL-Handle freigeben

Zur Ressourcenbereinigung empfiehlt es sich, das DLL-Handle freizugeben, wenn es nicht benötigt wird mehr:

FreeLibrary(hGetProcIDDLL);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage