DLLs aufrufen und dessen Funktionen ausführen
-
Cool! Danke "pub00515"!

Hat funktioniert und war super leicht!
Gruß LukasBanana
-
Da empfiehlt sich auch ein typedef zu verwenden. Macht die ganze Sache übersichtlicher
.
-
CodeFinder schrieb:
Da empfiehlt sich auch ein typedef zu verwenden. Macht die ganze Sache übersichtlicher
.Vielleicht so?
typedef extern "C" __declspec(dllexport) DLLexport;Gruß LukasBanana
-
Nee dafür benutzt Du besser ein #define.
Also
#define DLLEXPORT __declspec(dllexport)Was Codefinder vermutlich meint, sind typedefs für die Funktionspointer.
z.B.typedef void (*voidfunc)();Dann kannst Du schreiben:
voidfunc pfunc = (voidfunc) GetProcAddress(...)macht die Sache wesentlich übersichtlicher wenn der Prototyp länger wird. Oder man es oft benutzt :-).
-
Hehe, ne so (sry, hätte das Bsp sofort posten sollen):
typedef void (*PFUNCTION)(void); // 'PFUNCTION' wird jetzt wie ein Typ behandelt, also bspw. wie int HMODULE hDLL = LoadLibrary(TEXT("Dllname.dll")); // DLL laden if(hDLL != NULL) // Prüfen, ob DLL erfolgreich geladen werden konnte { // Funktionszeiger-Variable anlegen und Adresse der Funktion in der DLL ermitteln: PFUNCTION pFunction = reinterpret_cast<PFUNCTION>(GetProcAddress(hDLL, "test")); if(pFunction != NULL) // Wichtig: Konnte die Adresse der Funktion erfolgreich ermittelt werden ? Falls nein, darf die Funktion nicht aufgerufen werden, sonst würde es hier eine Access-Violation geben! pFunction(); // Erfolgreich ermittelt, also aufrufen! }
-
Also so:
/* ... */ typedef (void (*)()) voidfunc; typedef (int (*)()) intfunc; typedef (float (*)()) floatfunc; /* ... */ void (*MyFunc)() = voidfunc GetProcAddress(hDLL, "MyDLLFunction");Gruß LukasBanana
-
@pub00515: Jupp genau
.
-
LukasBanana schrieb:
Also so:
/* ... */ typedef (void (*)()) voidfunc; typedef (int (*)()) intfunc; typedef (float (*)()) floatfunc; /* ... */ void (*MyFunc)() = voidfunc GetProcAddress(hDLL, "MyDLLFunction");Gruß LukasBanana
Ne der Name des Typs muss direkt dem '*' folgen.

/* ... */ typedef (void (*voidfunc)()); typedef (int (*intfunc)(); typedef (float (*floatfunc)()); /* ... */ voidfunc MyFunctionPointer; MyFunctionPointer = (voidfunc)GetProcAddress(hDLL, "MyDLLFunction");Siehe auch mein Beispiel oben.
-
Achso, danke ich hab`s jetzt glaub ich kappiert!

Danke an alle
Gruß LukasBanana