Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » callback sprungadresse auf klasse

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.05.2004, 10:25 Uhr
~matlox
Gast


hallo allerseits,
ich habe folgendes problem:

ich moechte eine dll einbinden die eine callback funktion beinhaltet. diese callbackfunktion soll einen funktionspointer aus der hauptanwendung bekommen. wenn dieser pointer aber auf eine klassenfunktion zeigt, dann findet er zwar die funktion, aber alle klassenobjekte die vorher erstellt wurden sind null. ich habe es mittlerweile so geloest, dass es eine funktion ausserhalb der klasse gibt, die auf globale variablen zurueckgreift, die wiederum mittels pointer mit der klasse verbunden sind, bin aber ueberhaupt nicht gluecklich damit.
meine frage also: ist es ueberhauot moeglich eine callbackadresse auf eine klassenfunktion zu setzen? irgendwie sagt mir mein gefuehl, dass es gehen muss, da er die funktion ja auch findet. wahrscheinlich muss man die sprungadresse des klassenkonstruktors mitliefern... egal... jemand da der abhilfe schaffen kann?

gruessings
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.05.2004, 10:50 Uhr
Tommix



Hallo,
ich würde sagen, das hatt nur mit statischen Funktionen Sinn. Eine Funktion existiert ja physisch nur einmal, auch bei mehreren Instanzen und die Callbackfunktion "weiss" ja nicht, welche Instanz gemeint ist. Die Callbackfunktion müsste also eher die Adresse der Klasseninstanz bekommen als die einer einzelnen Funktion.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.05.2004, 11:02 Uhr
~matlox
Gast


das bringt mir aber nicht viel. da die dll ja eine funktion ausfuehren soll. was soll sie mit der adresse der klasseninstanz. wenn dann wuerde das wahrscheinlich in verbindung klappen. das finde ich aber ein wenig zu strange, dass ich dann beide infos zu der dll schicke um dann die infos wieder zurueck zu bekommen.....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.05.2004, 14:03 Uhr
stephanw
localhorst


Wieso bringt Di das nicht viel ? Fakt ist: wenn Du einen normalen Funktionszeiger brauchst, geht das nur mit normalen Funktionen oder mit static-Klassenmethoden der Form
C++:
class A {
  static int theFunction (int c) {
   // ...
  }
};


weil diese keine Object-Instanz brauchen. Ansonsten fällt mir spontan noch ein, dass Du keinen Funktionszeiger sondern ein Objektzeiger übergibst und die Callbackfunktion als Instanzmethode implementierst, die dann über den Zeiger aufgerufen wird.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.05.2004, 09:30 Uhr
RHBaum



Methoden an Klassen werden vom compiler auch in norale funktionen gewandelt ... nur brauchen diese eben nen zusaetzlichen Parameter, naemlich nen zeiger auf den datenbereich der eigenen klasse. Dieser wird von den compilern unter windows leider unterschiedlich aufgeloesst / die signaturen und Symbole stimmen da ned ueberein .... Das ist auch der Grund, warum eben klassensymbole in dlls nicht so ohne weiteres exportiert werden koennen.

Mit viel Humor und internen WIssen vom compiler koenntest das nutzen ... fuer deinen compiler fuer deine Version ! aber warum ?

Die Klasse kennst doch in nur in deiner Dll ? wie willst die den exportieren ?

Als Loesungsansatz lass dich vielleicht von windows selber inspirieren ... und bau Handels ... Lass in deiner dll die klassen ueber handels definieren, und schreib exportfunktionen die Handels unterstuetzen ... hold dir die entsprechende klasse und mappe die Exportfunktion auf die methode ....

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: