dll mit Qt-Funktionalität

Alles rund um die Programmierung mit Qt
Antworten
wipiku
Beiträge: 15
Registriert: 13. März 2007 08:35

dll mit Qt-Funktionalität

Beitrag von wipiku »

Hallo zusammen,

wie im Titel schon beschrieben, versuche ich eine dll zu erstellen. Auf diese möchte ich dann in einem anderen Projekt mittels QLibrary zugreifen.

Das funktioniert auch schon ganz gut, solange ich in der dll kein Qt vertwende.

Sobald ich aber auch nur eine QMessageBox ausgeben lassen will, sagt mir qDebug zwar, dass er die dll laden konnte und auch die entsprechende Funktion gefunden hat, nur beim Ausführen stürzt mir das Programm dann ohne etwas zu sagen einfach ab.

Ersetze ich die QMessageBox durch MessageBoxA funktioniert es wieder.

Es müsste also irgendwie mit Qt zu tun haben.

Hier im Forum und auch sonst habe ich speziell zu diesem Problem leider nichts gefunden.

Kann mir jemand auf die Sprünge helfen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Vieles in Qt benötigt eine laufende Q(Core)Application-Instanz. Dies kann man zwar auch in einer Dll realisieren (einige haben das hier imho schonmal versucht), ist aber nicht wirklich sinnvoll.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
wipiku
Beiträge: 15
Registriert: 13. März 2007 08:35

[gelöst] dll mit Qt-Funktionalität

Beitrag von wipiku »

Danke für die schnelle Antwort.

Bedeutet also im Klartext, dass ich mich von der Idee, Qt in einer dll umzusetzen, verabschieden sollte.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Kommt auf den Anwendungszweck an. Ich habe schon ActiveX-Komponenten mit Qt erstellt, warum sollte eine DLL nicht gehen.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
wipiku
Beiträge: 15
Registriert: 13. März 2007 08:35

Beitrag von wipiku »

Warum sie nicht geht, weiß ich eben nicht.

Aber wie gesagt, schon bei einer simplen QMessageBox bricht alles zusammen.

Der eigentliche Ansatz ist, einen QDialog in die dll zu packen. Im Groben etwa so, wie der Windows Datei Öffnen/Speichern Dialog.

Für evtl. Lösungsansätze wäre ich natürlich dankbar.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Wie Christian81 schon schrieb, brauchst du ein Application object.
Falls du keines aus der HauptApp bekommst, in der dllMain() kannst du so eines erzeugen und wieder zerstoeren (beim entladen), damit kannst dann eigentlich QT GUI funtionen in der dll verwenden.

Funktioniert bei uns eigentlich ganz gut, z.b. um an nicht QT programmen plugins anzubinden, die eine QT oberflaeche haben.

Ciao ...
wipiku
Beiträge: 15
Registriert: 13. März 2007 08:35

Beitrag von wipiku »

Also, nach etlichen Versuchen habe ich es jetzt geschafft, in dem ich in jeder externen dll-Funktion ein Application object erzeuge. Über die dllMain habe ich es leider nicht hin bekommen.
Antworten