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?
dll mit Qt-Funktionalität
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
[gelöst] dll mit Qt-Funktionalität
Danke für die schnelle Antwort.
Bedeutet also im Klartext, dass ich mich von der Idee, Qt in einer dll umzusetzen, verabschieden sollte.
Bedeutet also im Klartext, dass ich mich von der Idee, Qt in einer dll umzusetzen, verabschieden sollte.
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.
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.
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.
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 ...
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 ...