Modul / Plugin

Alles rund um die Programmierung mit Qt
Antworten
monte
Beiträge: 24
Registriert: 28. August 2004 17:04
Wohnort: Wiswiel
Kontaktdaten:

Modul / Plugin

Beitrag von monte »

Hi

ich programmiere hier so ein Programm das verschiedene Datenformate
ein und auslesen können soll.

Soweit kein Problem nur hätte ich gern das die ein und ausgabe Funktionen
für die Formate in modulen sind. Vom Prinzip her wie Plugins.
Alte Module können durch neue ersetzt werden und neue Plugins können
hinzugefügt werden.

Die Module sollen in einem Verzeichnis liegen das beim Programmstart
durchsucht wird . wird ein Modul gefunden wird es geladen.

Da das ja alles noch viel zu einfach ist soll es natürlich unter Linux und
Windows funktionieren.

Hat jemand ne ahnung nach was ich da suchen muss und ob das überhaupt
möglich ist.

Hab mal gelesen mit Python kann man Module zur laufzeit laden oder so ?

Ja brauch halt jedenfalls ein Plan wo ich da suchen bzw anfangen muss.

cya
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, ich glaube ich verstehe dich nicht.

C++ Qt Programm soll Module laden, die in einem bestimmten Verzeichniss sind, z.B. {appDir}/plugins/meineModule ?
Naja, wo liegt da das Problem?
Wenn das alles ist, würde ich sagen, es ist ne kleine Anwendung, eine wirkliche Schwierigkeit sehe ich jetzt ehrlich gesagt nicht.
Zuletzt geändert von FlorianBecker am 4. Oktober 2005 11:01, insgesamt 1-mal geändert.
monte
Beiträge: 24
Registriert: 28. August 2004 17:04
Wohnort: Wiswiel
Kontaktdaten:

Beitrag von monte »

Also die Module sollen beim bedarf geladen werden, nur wenn ich das Programm compiliere sind die Module evtl. noch nicht vorhanden.

Wenn sich in dem Modul nun eine Klasse befindet die ich verwenden moechte kann ich die moduldatei ja nicht mit #include einbinden da sie mir ja noch nicht bekannt ist.

Mein datei Konvertierungsprogramm soll im prinzip einfach um eine Eingabe/Ausgabe Klasse erweitert werden können indem ich ein neues Modul schreibe und dieses in ein spezielles Verzeichnis kopiere.

FlorianBecker hat geschrieben:C++ Qt Programm soll Module laden, die in einem bestimmten Verzeichniss sind, z.B. {appDir}/plugins/meineModule ?
Naja, wo liegt da das Problem?
Das Problem liegt vermutlich darin das ich davon keine Ahnung hab :-)



Naja das Projekt liegt momentan sowiso auf Eis da ich noch andere hab. Trotzdem danke für jede Anregung.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Hi,

also der meiner Meinung nach beste Lösungsansatz ist Class Loading, mit Qt 3 wie auch 4 jedoch nicht so ohne weiteres Möglich. Qt verwendet etwas ähnliches, siehe dazu SQLModule, die über Symbole definiert werden und imme die gleichen Funktionen nur jeweils für eine andere Datenbank bereitstellen. Das System ist ziemlich gut, weil er das moduleDir durchsucht und ggf. neue Plguins laden kann.

Wenn du davon keine Ahnung hast, ist es sicher ein bischen komplizierter, da Modul- und PlguinInterfaces so ziemlich das ätzenste sind, was es zu programmieren gibt. Aber danach ist die Moduleprogrammierung sehr einfach.

Das einfachste und beste, was ich kenne ist dynamisches Class Loading, diese flexibilität erreicht man mit normalen Modulen einfach nicht. Siehe dazu libfactory++ (http://freshmeat.net/projects/libfactory/). Läuft auf jedem OS.

Als alternative würde ich ansonsten nur noch das pseudo Class Loading von Qt für SQL Module benutzen, Module mit Symbolen sind in keinster Weise sinnvoll, sondern statisch und träge.

Vielleicht regt dich das ja ein bischen an. Viel Spaß dabei.
Antworten