GetProcAdress - Funktion aus DLL laden
-
hallo!
ich möchte eine Funktion -
extern "C" { _declspec(dllexport) HelloWorld(char* text) { //... } }- aus einer DLL laden.
also:HINSTANCE hhelp; hhelp= LoadLibrary("insert.dll"); GetProcAddress(...,...);Die DLL wird erfolgreich geladen, nur wie gelange ich zur Funktion?
und welche PARAMETER erhält GetProcAddress?
hat jemand ein Beispiel?mfG (c)h
-
Kannst du nicht Google oder die Forensuche benutzen um Beispeile zu GetProcAddress zu finden?
-
na gut.. dann nehmen wir mal einen Beispielcode:
#include<windows.h> void main() { HMODULE myLib = NULL; DLLPrcInst SetHook = NULL; myLib = LoadLibrary ("insert.dll"); if (myLib == NULL) MessageBox (NULL, "Fehler beim Laden der DLL", "Error", MB_OK); SetHook = (DLLPrcInst)GetProcAddress (myLib, "HelloWorld"); if (SetHook == NULL) MessageBox (NULL, "Fehler beim Laden der Funktionen", "Error", MB_OK); FreeLibrary (myLib); }(tolles beispiel
funktioniert nicht mal):
"DLLPrcInst" kennt mein compiler nicht
folglich kann ich DAS nicht mal testen.DANN NOCH: woher weiss man, wie die funktion also "HelloWorld" heisst, weil ich glaube, DAS ist es nicht ganz
mfG (c)h
-
Dann such ein vernünftiges Beispiel das komplett ist.
Bei deiner eigenen DLL solltest du schon die Namen wissen, oder falls es eine Fremd-DLL ist muss es irgendwo dokumentiert sein. Den Namen kann man auch über das Tool "Dependency Walker" rausfinden, aber nicht die Parameter.
-
woher bekomme ich das Tool?
-
Oh man du bist echt zu doof.
Google benutzen
-
*dachte nicht, dass das programm so bekannt ist, oder das es so eindeutig zu identifizieren sein wird*
aber: mal googlen
-
#include <stdio.h> #include <windows.h> typedef void/*rückgabewert*/ (_cdecl* FUNC)(/*parameter*/); void loadDLL() { HINSTANCE hDLL = LoadLibrary("dllname.dll"); if(hDLL != NULL) { printf("DLL geladen."); FUNC function1 = (FUNC)GetProcAddress(hDLL, "funktionsname"); function1(); FreeLibrary(hDLL); } else { printf("DLL nicht geladen."); } } void main() { loadDLL(); }Damit mal irgendwo ein (bei mir) funktionierender code steht. (man findet ja sonst nur fehlerhafte codes)
PS.: es funktioniert, aber wenn ich was besser machen kann, oder falsch verstanden habe: bitte melden

mfG (c)h
-
Den Rückgabewert von GetProcAddress auf NULL prüfen