Überschreiben einer dll-Methode von außen



  • Hallo zusammen,

    zuerst einmal hoffe ich, dass ich die richtige Kategorie erwischt habe. Ansonste kann ein Admin das Thema ruhig verschieben. 😉

    Ich habe folgendes Problem. Ich habe eine dll erstellt, diese beinhaltet die Methode dummy(), welche aus 2 verschiedenen Programmen aus aufgerufen wird. Die Implementierung dieser Methode soll allerdings in beiden Programmen unterschiedlich aussehen. Gibt es eine Möglichkeit wie ich die Methode der dll von außen überschreiben kann?

    Viele Grüße
    mpd



  • Hallo,

    Warum packst du die methode überhaupt in eine dll, wenn deine beiden Programme sowieso unterschiedliche Implementationen brauchen? Pack doch die Funktion direkt in die Programme.



  • Die Methode wird bereits innerhalb der dll aufgerufen, allerdings soll sie in beiden Programmen unterschiedlich implementiert werden.



  • Normalerweise ist es doch andersherum - deine Programme rufen Funktionen der DLL auf. Aber auch für solche Notfälle gibt es eine Lösung, Funktionszeiger. (das jeweilige Programm übergibt der DLL einen Zeiger auf "seine" dummy()-Funktion, die dann von innen aufgerufen werden kann.



  • Dann besteht immernoch Braunsteins berechtigter Einwand, warum du die methode in eine DLL verfrachtest, wenn sie sich von Programm zu Programm unterscheiden soll. Wenn eine Funktion in der DLL irgendeine andere Funktion aufrufen soll, die von Programm zu Programm verschieden ist, dann uebergib der aufrufenden Funktion beispielsweise einen Zeiger auf die zu rufende Funktion. Die Funktion nachtraeglich so zu ueberschreiben, dass innerhalb der DLL die ueberschriebene Version sichtbra ist, duerfte bestenfalls schwierig sein, wenns ueberhaupt moeglich ist (kenne mcih mit DLLs nicht sooo aus)



  • Ich glaube er möchte vom Programm aus eine Funktion A in der DLL aufrufen, die Funktion A soll dann eine Funktion B aufrufen, und B soll je nach Programm unterschiedlich sein.

    Und ich denke aus irgendeinem Grund vermutet er dass B dazu in der DLL implementiert sein muss.

    @mpd: Ich denke das liesse sich mit Callbacks bzw. u.U. auch einfach virtuellen Funktionen lösen.


Anmelden zum Antworten