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 😕


Log in to reply