von einer dynamischen dll funktionen des hauptprogrammes aufrufen...
-
hallo,
so langsam komme ich mit dem thema dynamische dll weiter... allerdings frage ich mich, ob es möglich ist, auch funktionen aus dem hauptprogramm aufzurufen....wenn in der exe eine funktion "mache piep" existiert.... wie kriegt man es hin, dass die dll diese funktion aufrufen kann (gleiches gilt für variablen) ?
geht sowas überhaupt uns wenn ja, wie ?
gruß
rml
-
Du könntest der DLL einfach die Adressen der Funktionen übergeben die sie aufrufen soll.
-
hmmm - ich habe mal etwas die suchenfunktion benutzt und bin dabei hierauf gestossen. ich denke, du meinst das:
float Plus(float a,float b){return a+b;} float Minus(float a,float b){return a-b;} typedef float(*pt2Func)(float, float); // function takes a char and returns a function pointer which is defined as a // type above. <opCode> specifies which function to return pt2Func GetPtr2(const char opCode) { if(opCode == '+') return &Plus; if(opCode == '-') return &Minus; } // execute example code void Return_A_Function_Pointer() { cout << endl << "Executing 'Return_A_Function_Pointer'" << endl; float (*pt2Function)(float, float); // define a function pointer pt2Function=GetPtr1('+'); // get function pointer from function 'GetPtr1' cout << pt2Function(2, 4) << endl; // call function using the pointer pt2Function=GetPtr2('-'); // get function pointer from function 'GetPtr2' cout << pt2Function(2, 4) << endl; // call function using the pointer }
ich werde es mir morgen mal zu gemüte führen, ob das klappt...
kannst du mir sagen, ob man so auch eine klasse übergibt und somit alle klassenfunktionen mit einer adresse benutzen kann, oder muss für jede klassenfunktion eine eigene adresse "benutzt" werden ?dank dir auf jeden fall schonmal für den tip
gruss
rml
-
Wenn ich SirLant richtig verstanden habe, so ähnlich:
Du hast in der DLL eine Funktion, der du einen Funktions-Pointer als Parameter übergibst (rufst du in der exe auf) - in der DLL rufst du dann über diesen Pointer die Funktion aus der exe auf
Ansonsten kann man glaub' auch auch exe-Files Funktionen exportieren, oder verwechsel ich da gerade etwas