Realisierung von Plugins ???
-
und wie mach ich das ??????
-
Dynamische Biblioteken wirklich erst zur Laufzeit Linken und keine Wrapper .libs verwenden, einheitliches Interface und eine Konfigurationsdatei in der du die zu ladenden dynamischen Biblioteken angibst.
Oft sind Plug-Ins auch in einer Skriptsprache geschrieben, dann brauchst du einen Interpreter, der die entsprechenden Skripte lädt und ihnen den Zugriff auf benötigte Funktionen/Variablen ermöglicht.
-
für dlls unter windows kannst nach LoadLibrary(), GetProcAddress() usw. suchen.
du musst dann halt die Plugin-Klasse sowohl dem plugin als auch dem programm zur verfügung stellen.
Die Plugin-Klasse sollte dabei aussließlich virtuelle Methoden haben. ob sie dabei auch =0 (also abstrakt) sein müssen, damit das auch gescheit funktioniert, weiß ich jetzt nicht. habe schon lange nichts mehr in diese richtung gemacht.
Was du noch beachten solltest, ist die speicherverwaltung. d.h. es kann (muss aber nicht) zu problemen führen, wenn du speicher im programm anforderst und diesen im plugin freigibst. bzw. umgekehrt. (std::string und konsorten gehören ebenfalls in diesen Bereich).
Das kannst du lösen in dem du noch funktionen von deinem programm aus zur verfügung stellst, die den Speicher verwalten.
-
Was die nutzung von den Plugins über verschiedene Betriebsysteme (Linux, Windows, etc), onhe zu Kompilieren, angeht. Das kannst du vergessen, außer es gibt einen C++ Interpreter, oder dass ich etwas verpasst habe.
Kannst aber wie darthdespotism sagte eine Skriptsprache verwenden. Natürlich solche die allen Zielplatformen auch vorhanden ist. Mit Java gehts theoretisch auch, aber ist evtl zu umständlich.
-
Ok, danke so weit.
Zu Windows bin ich mittlerweile auch fündig geworden. Danke für die Tips.
Aber wie mache ich das unter Linux? Wie erzeuge und vor allem wie lade ich diese .so-files? Sind die wenigstens innerhalb von Linux kompatibel oder unterscheiden die sich wieder von Distribution zu Distribution?
Könnte man nicht eine Art von Konverter schreiben, der so-files in dll-files umwandelt und umgekehrt, so etwas müsste doch möglich sein? Insbesondere wenn man voraussetzen kann, dass die Dateien eine Bestimmte Struktur haben (eben die eines bestimmten Plugins).
-
guck mal bei Codeproject.com ... da stehen nen haufen Beispiele zu der THematik ...
-
Meine Linux-Fragen sind nocht nicht beantwortet. Auf codeproject.com geht´s leider nur um Windows. Hat jemand nen link oder forum oder irgend etwas.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Stichwort man: dlopen
Wenn ich heute Abend zu Hause bin, kann ich dir mal einen kleinen Code posten, den ich dazu geschrieben habe.
-
hi,
rüdiger hats schon gesagt: dlopen
schau mal hier:
http://www.tldp.org/HOWTO/C++-dlopen/index.htmlcu acron