Du hast die Doku, speziell den Abschnitt "How to create Qt Plugins" (der in QPluginLoader verlinkt ist) nicht gelesen.
Eine simple shred-lib bringt dir nur was für QLibrary. Eine Klasse für so ein Qt Plugin muss von QObject erben. Auch Qt muss sich an C++ halten, und wenn die Klasse nicht von QObject erbt, wie soll aus der Instanz plötzlich ein QObject werden? Oder kann Qt zaubern? Schau mal was QPluginLoader::instance() zurück gibt!
Alle Lilnks, die unter "see also" angegeben werden sind auch interessant, vor allem das Example...
Also wenn ich das richtig verstanden habe ist die QLibrary Klasse nur dafür da shared libs direkt beim Linken einzubinden.
Bei einem Plugin muss ich dann allerdings die "Lower-Level API" http://doc.trolltech.com/4.7/plugins-howto.html benutzen, wenn ich Plugins für ein Konsolenprogramm schreiben will. Zusätzlich dann noch Interfaces schreibne und nach der Anleitung der Lower level API die Struktur des Plugins aufbauen.
Ok, ich habe mal versucht das Interface zu schreiben und das Plugin zu komplilieren. Allerdings bekomme ich hier schon Fehlermeldungen, obwohl es so eigentlich in der Anleitung steht.
Doku bitte lesen und nicht nur überfliegen - ist ja kein Flugsimulator...
Dir fehlt im Interface-header noch ein entsprechendes "Q_DECLARE_INTERFACE"-Statement.
Z.B.:
anno1988 hat geschrieben:danke für die Hilfe. Jetzt funktioniert das Laden des Plugins.
Das wundert mich aber. Bekommst du keine Meldung wg. "undefined symbol" o.Ä.? Denn dein "Interface" ist kein solches, es besitzt nämlich eine Deklaration einer nicht-pure-virtual Methode (getSum) welche nirgends implementiert wird. Mach ein "=0" bei der Deklaration hinten ran und es sollte passen.