0 Pluspunkte 0 Minuspunkte
Wie kann ich eine Funktion in einer DLL aufrufen, ohne das diese mit verlinkt wurde?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Dazu musst du die Signatur - also Name, Parameter und Rückgabewert der Funktion kennen. Angenommen deine Funktion sieht so aus

int myFunc(int a, float b) { ... }

Das bedeutet der Rückgabewert ist ein int, und die Parameter sind int und float. Du kannst eine sogenannte Typedefinition erstellen um die vorhandenen Datentypen (int, float, char,..) zu erweitern.

#include <Windows.h>

/* Typedefinition erstellen */
typedef int (__cdecl *MYFUNC)(int, float);

int main() {

    HANDLE dll; // dll file
    MYFUNC fn;   // function pointer

    dll = LoadLibrary("My.dll");   
    fn = (MYFUNC) GetProcAddress(dll, "myFunc");

    int r = (*fn)(2, 3.14159f); // function call

    return 0;

}
von