Funktion per String Aufrufen
-
Hallo Leute,
ich möchte eine Funktion schreiben die einen char* bekommt und daraufhin jene Funktion aufruft die im String per Name steht. Die Namen dieser Funktionen stehen leider erst zur Laufzeit bzw. beim Kunden fest, da sie per dll eingebunden werden. Und welche dlls das seine werden... KA.
Ich kann also kein if Statement der FormIf stringX == "calcALL" Then
calcALL();
Fimachen. Links oder Stichworte die mich der Lösung näher bringen würden schon reichen.
Malte
-
Wenn die funktionen aus ner Dll kommen kannst doch einfach GetProcAddress verwenden oder seh ich da was falsch
-
Hi,
die Funktionen müssen alle die gleichen Parameter und den gleichen Rückgabewert haben.
angenommen die exportieren Dllfunktionen hätten folgendes Muster:bool Funktionsname(char* Parameter1, void* Parameter2);So könnte dann der Code aussehen:
typedef bool (*DLLFUNCTION)(char* Parameter1, void* Parameter2); bool ExecFunctionFromDll(char* Funktionsname, char* Dllname, char* Parameter1=NULL, void* Parameter2=NULL) { HMODULE hLib = LoadLibrary(Dllname); // dll laden if(!hLib) return false; // dll nicht gefunden DLLFUNCTION pFn = (DLLFUNCTION) GetProcAddress(hLib, Funktionsname); // Zeiger auf die Funktion bekommen if(!pFn) // wenn Funktion nicht gefunden wird { FreeLibrary(hLib); return false; } pFn(Parameter1, Parameter2); // Funktion aufrufen FreeLibrary(hLib); return true; }Grüße Rapha
-
Hallo CMatt und Rapha,
vielen Dank für die Hilfe:-) So geht es....
Viele Grüße
Malte
-
Ich bin gerade am Testen und es funktioniert nicht...
Wie kann ich angeben das die Aufrufkonvention __stdcall sein soll?
Keines von beiden funktioniert:
typedef __stdcall bool (*DLLFUNC2)(double P1, double P2, int i);
typedef bool __stdcall (*DLLFUNC2)(double P1, double P2, int i);
-
Es war:
typedef bool (__stdcall *DLLFUNC2)(double P1, double P2, int i);