Verwendung von Signals in Pluginklassen

Alles rund um die Programmierung mit Qt
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Hätte ich auch getippt... am besten danach "qmake distclean;qmake;make".. damit du die Makefile auch wirklich neu erstellst :wink:
hel800
Beiträge: 16
Registriert: 5. Dezember 2007 17:54

Beitrag von hel800 »

TestPlugin ist ein separates Projekt. Es vererbt DSGPluginInterface. Das Interface gehört aber gar nicht zu dem Projekt, sondern stammt ja aus meiner Hauptapplikation. Wenn ich das DSGPluginInterface.h im HEADER-Bereich des Plugin-Projektes aufführe, kommt: WARNING: Failure to find: dsgplugininterface.h.

In der pro-Datei meiner Hauptapplikation ist dsgplugininterface bei den HEADERN dabei, die Appliaktion kompiliert auch ohne Fehler, leider aber das Plugin nicht

@solarix: Hab ich leider auch schon.

dennoch danke für Euro Tips! ;-)
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

relativer Pfad in der pro-Datei?

Code: Alles auswählen

HEADERS += ../hauptprojekt/include/dsgplugininterface.h
[EDIT] am besten zeigt du uns die komplette Profile-Datei des Plugins sowie die include-Anweisung des Plugin-Interfaces in der konkreten Plugin-Implementierung :wink:
Zuletzt geändert von solarix am 3. Mai 2010 19:07, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

solarix hat geschrieben:relativer Pfad in der pro-Datei?

Code: Alles auswählen

HEADERS += ../hauptprojekt/include/dsgplugininterface.h
Was soll das? dsplugininterface.h muss schon im Hauptprojekt sein...

Windows oder Linux?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hel800
Beiträge: 16
Registriert: 5. Dezember 2007 17:54

Beitrag von hel800 »

Acchhh, waren mehrere Sachen. 1. hatte ich noch ne alte dsgplugininterface.h da rumliegen und 2. war die falsche damit verbunden, da war wohl das Q_OBJECT Makro noch nicht drin. Also es kompiliert jetzt, kommt noch zu Laufzeitfehlern, das ist sicher ne andere Baustelle ;-)

Danke Euch erstmal für Eure Geduld ;-)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Geht das denn gut, wenn der Header zusätzlich zum hauptprojekt in jedem Plugin gemoced und in die DLLs gelinkt wird?
Denn definitiv braucht das Plugin selber Zugang zur vtable des Interfaces beim Linken.

Ich hab damals für meine Projekte eine größere lib erstellt (war sowieso nötig), gegen die die Plugins gelinkt haben und in denen die moc-Kompilate gelinkt wurden.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Ich hab damals für meine Projekte eine größere lib erstellt (war sowieso nötig), gegen die die Plugins gelinkt haben und in denen die moc-Kompilate gelinkt wurden.
Ja.. Ich ebenfalls...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

franzf hat geschrieben:Geht das denn gut, wenn der Header zusätzlich zum hauptprojekt in jedem Plugin gemoced und in die DLLs gelinkt wird?
Ausprobiert habe ich es nicht aber zumindest im MOC-Bereich könnte es dann Probleme geben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
hel800
Beiträge: 16
Registriert: 5. Dezember 2007 17:54

Beitrag von hel800 »

Geht das denn gut, wenn der Header zusätzlich zum hauptprojekt in jedem Plugin gemoced und in die DLLs gelinkt wird?
Hmm, vielleicht hat der Laufzeitfehler auch genau damit zu tun. Ich habe sonst nichts verändert. Ich kann in meinem Plugin-Projekt halt nicht gegen eine Library linken, in der sich die Anweisungen für das Interface befinden, weil es nicht teil einer dynamischen Library ist, sondern in der Hauptapplikation drin steckt.

Wie könnte das alternativ gelöst werden, oder sollte man solches Interface dann besser in eine dynamische Lib auslagern?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

hel800 hat geschrieben:Hmm, vielleicht hat der Laufzeitfehler auch genau damit zu tun.
Da wäre dann immer der beste Zeitpunkt, solche Fehler auch zu posten ;)

Ansonsten ist es mit Qt nicht wirklich schwer, eine eigene lib zu erstellen. Im jeweiligen .pro TEAMPLATE auf lib setzen.
Ich selber verwende aber schon länger keine .pros mehr, finde cmake angenehmer (und ich hab mittlerweile eigentlich mehr mit C++ ohne GUI zu tun, da macht sich qmake zum Verwalten doch nicht so gut ;)). Kann also durchaus sein, dass man noch mehr machen muss. -> Doku befragen.
Antworten