Sehr geehrtes Forum,
ich bin gerade dabei eine Grundstruktur für eine größere Appplikation zu planen, die inviduell skalierbar sein wird. Ich habe mich daher für ein PlugIn-Framework entschieden, das auf der Windows-Plattform mit DLL's arbeiten wird und auf der Linux-Plattform mit SO-Bibliotheken. Zur Zeit teste ich mein Vorhaben auf technische Machbarkeit.
Das PlugIn-Framework selbst habe ich in der Hauptapplikation in seiner Grundstruktur bereits implementiert.
Hier meine bisherige Idee:
Es soll für alle zukünftigen DLL's immer eine exportierte Standardschnittstelle "init_plugin()" geben, die die Namen sämtlicher Funktionen, Variablen u.s.w. über sich selbst an den Aufrufer zur Laufzeit zurückliefert.
Die Namen der Funktionen selbst werden mir z.B. auch über ein char*-Array ebenfalls korrekt übergeben. Jedoch will ich jetzt aus diesen Namen anschliessend Funktionspointer bzw. Funktionalitäten in der Hauptapplikation damit verknüpfen.
Über "GetProcAddress(DLL,"NAME_DER_FUNKTION" )" kann ich zwar selbst Funktionspointer zur Entwicklungszeit damit erstellen, d.h. ich muss vor dem Kompilieren meiner Hauptapplikation schon den Namen der Funktionen u.s.w. wissen.
Verwende ich zur Laufzeit der Hauptapplikation mit GetProcAddress(..) den String eines Funktionsnamens, den ich zuvor über init_plugin() ausgelesen habe, bekomme ich beim Kompilieren der Hauptapplikation gleich einen fetten Compiler-Fehler.
Meine Frage ist: Ist es überhaupt möglich, mit dieser Methode Funktionspointer zur Laufzeit zu erstellen und diese z.B. mit einem entsprechenden Namen in einer Menüleiste hinzuzufügen? Oder ist es immer erforderlich, alle exportierten Funktionen mit Typkennungen vorher zu kennen? Beispiele habe ich schon zu genüge bei codeguru pp. gesichtet, jedoch lösen diese mein Problem nicht.
Für Eure Hilfe bin ich sehr dankbar!
ich bin gerade dabei eine Grundstruktur für eine größere Appplikation zu planen, die inviduell skalierbar sein wird. Ich habe mich daher für ein PlugIn-Framework entschieden, das auf der Windows-Plattform mit DLL's arbeiten wird und auf der Linux-Plattform mit SO-Bibliotheken. Zur Zeit teste ich mein Vorhaben auf technische Machbarkeit.
Das PlugIn-Framework selbst habe ich in der Hauptapplikation in seiner Grundstruktur bereits implementiert.
Hier meine bisherige Idee:
Es soll für alle zukünftigen DLL's immer eine exportierte Standardschnittstelle "init_plugin()" geben, die die Namen sämtlicher Funktionen, Variablen u.s.w. über sich selbst an den Aufrufer zur Laufzeit zurückliefert.
Die Namen der Funktionen selbst werden mir z.B. auch über ein char*-Array ebenfalls korrekt übergeben. Jedoch will ich jetzt aus diesen Namen anschliessend Funktionspointer bzw. Funktionalitäten in der Hauptapplikation damit verknüpfen.
Über "GetProcAddress(DLL,"NAME_DER_FUNKTION" )" kann ich zwar selbst Funktionspointer zur Entwicklungszeit damit erstellen, d.h. ich muss vor dem Kompilieren meiner Hauptapplikation schon den Namen der Funktionen u.s.w. wissen.
Verwende ich zur Laufzeit der Hauptapplikation mit GetProcAddress(..) den String eines Funktionsnamens, den ich zuvor über init_plugin() ausgelesen habe, bekomme ich beim Kompilieren der Hauptapplikation gleich einen fetten Compiler-Fehler.
Meine Frage ist: Ist es überhaupt möglich, mit dieser Methode Funktionspointer zur Laufzeit zu erstellen und diese z.B. mit einem entsprechenden Namen in einer Menüleiste hinzuzufügen? Oder ist es immer erforderlich, alle exportierten Funktionen mit Typkennungen vorher zu kennen? Beispiele habe ich schon zu genüge bei codeguru pp. gesichtet, jedoch lösen diese mein Problem nicht.
Für Eure Hilfe bin ich sehr dankbar!