Heim >Backend-Entwicklung >C++ >Wie importiere und verwende ich Funktionen aus DLLs in C?

Wie importiere und verwende ich Funktionen aus DLLs in C?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-14 05:41:09495Durchsuche

How Do I Import and Use Functions from DLLs in C  ?

Funktionen aus DLLs importieren: Eine umfassende Anleitung

Das Laden von Dynamic Link Libraries (DLLs) ermöglicht Ihren C-Programmen die Nutzung von Funktionen aus externen gemeinsam genutzten Bibliotheken . Um auf Funktionen innerhalb einer DLL zuzugreifen, ist jedoch ein anderer Ansatz erforderlich als das Importieren von Funktionen aus Header-Dateien.

Laden der DLL mit LoadLibrary

Die LoadLibrary-Funktion lädt eine DLL in der Speicher des aktuellen Prozesses. Bei diesem Vorgang werden die in der DLL definierten Funktionen nicht automatisch importiert.

Abrufen der Funktionsadresse mit GetProcAddress

Sobald die DLL geladen ist, müssen Sie die Adressen von abrufen welche Funktionen Sie nutzen möchten. Dies geschieht mit der Funktion GetProcAddress.

#include <windows.h>

typedef int (__stdcall *f_funci)();  // Define function pointer type

int main() {
  HINSTANCE hGetProcIDDLL = LoadLibrary("...")

  // Retrieve function address
  f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
}

Im Codeausschnitt oben definieren wir einen Funktionszeigertyp namens f_funci, der die Funktion darstellt, die wir importieren möchten. Die GetProcAddress-Funktion gibt die Adresse der Funktion innerhalb der DLL zurück.

Funktionen aus DLLs exportieren

Um den ordnungsgemäßen Export von Funktionen aus einer DLL sicherzustellen, verwenden Sie __declspec( dllexport) und __stdcall Attribute.

int __declspec(dllexport) __stdcall funci() {
   // ...
}

Die Das Attribut __declspec(dllexport) gibt an, dass die Funktion aus der DLL exportiert werden soll, und das Attribut __stdcall gibt die von der DLL verwendete Aufrufkonvention an.

DLL-Handle freigeben

Nachdem Sie die aus der DLL importierten Funktionen verwendet haben, empfiehlt es sich, das Handle für die Bibliothek freizugeben. Dies wird mit der FreeLibrary-Funktion erreicht.

FreeLibrary(hGetProcIDDLL);

Indem Sie diese Schritte befolgen, können Sie DLLs dynamisch laden und auf ihre Funktionen in C zugreifen. Mit dieser Technik können Sie die Fähigkeiten Ihrer Programme erweitern, indem Sie wiederverwendbare Module verwenden, ohne dass eine statische Verknüpfung oder Neukompilierung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie importiere und verwende ich Funktionen aus DLLs in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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