Jetzt nachdem das laden und aufrufen klappt möchte ich das ganze wieder mal in eine Klasse stecken. Ich hab sie dll getauft und leider klappt funktioniert sie noch nicht. In der dll (hello.dll) befndet sich lediglich eine Funktion (namens hello()), die eine QMessageBox mit einem kleinen Text erscheinen lässt. So wie es in der Doku von QLibrary steht lässt sich die auch wunderbar laden und die Messagebox erscheint. Nur mit meiner Klasse klappts halt nicht Kann mir wer helfen? Ich bekomme beim Kompilieren weder Fehler noch Warnungen, das Programm erscheint im Task Manager, aber die MessageBox erschient nicht
ich glaube nicht. Was ich möchte ist eine Klasse mit einem QLibrary Member, sowie einen Funktionszeiger, der auf eine Funktion in der QLibrary gesetzt werden kann. Das nennt man doch nicht plugin, oder?
Ich möchte lediglich diesen Code (aus der Doku von QLibrary) in eine Klasse stecken :
thx, in der .zip befinden sich 2 Ordner: lib und loadlib. Im ersten ist alles was zur dll gehört und im zweiten die Klasse mit der ich die dll laden will
Es ist nicht unmöglich, aber ein bischen über 'wie erstelle ich eine shared lib/dll' schlaumachen wäre schon nicht schlecht.
/edit: Ausserdem verstehe ich immer noch nicht was Du willst. Wie ich schon sagte gibt es da zwei verschiedene Ansätze.
1. Laden der Lib beim Programmstart
2. Laden der Lib zur Laufzeit (so wie Du es derzeit machst)
2. geht nur wirklich einfach wenn man C-only Funktionen benutzt oder es als Plugin einsetzt (d.h. im Grunde eine C-only - Funktion die einen Ptr auf eine schöne virtuelle Klasse zurückgibt).
Wenn nichts wichtiges dagegen spricht ist 1.) immer vorzuziehen.
ich habe mir soeben Deine Code mal angeschaut.
Du solltest nachdem Aufruf des Konstruktors von QLibrary die Methode load() explizit aufrufen, und den return-Wert prüfen. http://doc.trolltech.com/4.3/qlibrary.html#load
Wenn Du das gemacht hast, wird Dir Dein Fehler wie Schuppen von den Augen fallen.
Viel Glück,
Tom
PS: Wir sollten aber trotzdem noch einmal Deine Zielsetzung der Implementierung diskutieren - wie von Christian bereits getan.
Entweder brauchst Du ein Plugin-System oder "nur" Code, der in libs ausgelagert ist. Für beide Fälle gibt es fertige Lösungen ....
ich hoffe euch nicht zu enttäuschen, indem ich sage, dass es sich wirklich nur um Code handelt. Die Sache ist nämlich die, dass ich noch nicht sehr lange objektorientiert programmiere und deswegen zur Übung alles was mir über den Weg läuft in Klassen schachtele ^^
sobald ich Zeit hab werde mal tun was du vorschlägst - thx