Hi!
Ist es auf irgendeiner Art und Weise möglich, eigene Plugins in C++ zu schreiben und sie dynamisch in einem C++/QT-Program zu laden?
Genau so ist es ja auch in vielen anderen Programmen realisiert, z.B. im Apache.
thx & cu Turbo24prg
On Sun, Sep 07, 2003 at 05:39:19PM +0200, Bastian Müller wrote:
Hi!
Hi Bastian,
Ist es auf irgendeiner Art und Weise möglich, eigene Plugins in C++ zu schreiben und sie dynamisch in einem C++/QT-Program zu laden?
Ja, im Grunde genommen kannst du die normalen ldopen/ldsym Funktionen dazu benutzen. Im Modul muss halt eine Funktion vorhanden sein, die dir ein Objekt zurückliefert.
Ciao, Tobias
Am Son, 2003-09-07 um 18.45 schrieb Tobias Koenig:
On Sun, Sep 07, 2003 at 05:39:19PM +0200, Bastian Müller wrote:
Hi!
Hi Bastian,
Ist es auf irgendeiner Art und Weise möglich, eigene Plugins in C++ zu schreiben und sie dynamisch in einem C++/QT-Program zu laden?
Ja, im Grunde genommen kannst du die normalen ldopen/ldsym Funktionen dazu benutzen. Im Modul muss halt eine Funktion vorhanden sein, die dir ein Objekt zurückliefert.
Danke für diesen Tip. Ich hab endlos bei Google gesucht und nichts gefunden. Du sagst, ldopen & ldsym - was genau muss ich da tun bzw. was muss ich in meinem Quellcode verändern (Headerdateien, Funktionen)
cu & thx Turbo24prg
On Sun, Sep 07, 2003 at 06:59:47PM +0200, Bastian Müller wrote:
Am Son, 2003-09-07 um 18.45 schrieb Tobias Koenig:
Hi Bastian,
Danke für diesen Tip. Ich hab endlos bei Google gesucht und nichts gefunden. Du sagst, ldopen & ldsym - was genau muss ich da tun
man ldopen ;)
bzw. was muss ich in meinem Quellcode verändern (Headerdateien, Funktionen)
Die Plugins sollten ja alle eine gemeinsame Basisklasse haben (nennen wir sie hier mal 'Plugin'), dann sieht der Code im Plugin so aus:
myplugin.cpp --------------
class MyPlugin : plublic Plugin { ... };
extern "C" {
Plugin *create_plugin() const { return new MyPlugin; } --------------
Und der Code in deinem Programm:
app.cpp ---------------- Plugin* (*getPlugin)();
void *handle = dlopen( "path/to/plugin/myplugin.so", RTLDNOW );
getPlugin = dlsym( handle, "create_plugin" );
Plugin *plugin = (*getPlugin)();
... ----------------
Ciao, Tobias
lug-dd@mailman.schlittermann.de