Heim >Backend-Entwicklung >C++ >Wie lade und rufe ich eine Funktion dynamisch aus einer DLL in C auf?
Frage:
Sie haben eine DLL mit einer Funktion namens funci( ) und versuchen, diese Funktion von C aus zu laden und darauf zuzugreifen. Es tritt jedoch die Fehlermeldung „‚funci‘ wurde in diesem Bereich nicht deklariert“ auf. Wie können Sie den Zeiger der DLL verwenden, um auf die Funktion zuzugreifen?
Antwort:
Schritt 1: Laden Sie die DLL
HINSTANCE hGetProcIDDLL = LoadLibrary("C:\path\to\test.dll");
Dadurch wird die DLL in den Speicher des Prozesses geladen.
Schritt 2: Funktionsadresse auflösen
Sie müssen die Adresse der Funktion mit GetProcAddress abrufen.
typedef int (__stdcall *f_funci)(); // Define function pointer f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Schritt 3: Funktionsadresse überprüfen
Überprüfen Sie, ob die Funktionsadresse erfolgreich erhalten wurde.
if (!funci) { std::cout << "Could not locate the function" << std::endl; return EXIT_FAILURE; }
Schritt 4: Funktion aufrufen
Sobald Sie den Funktionszeiger haben, können Sie ihn aufrufen.
std::cout << "funci() returned " << funci() << std::endl;
Schritt 5: DLL freigeben (optional)
Geben Sie das DLL-Handle mit FreeLibrary() frei, um die DLL zu entladen Speicher.
FreeLibrary(hGetProcIDDLL);
Zusätzliche Tipps:
Das obige ist der detaillierte Inhalt vonWie lade und rufe ich eine Funktion dynamisch aus einer DLL in C auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!