Seite 1 von 1
Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 11:28
von jw202
hallo,
ich programmiere schon seit längerem Applikationen für Linux Systeme. Kürzlich erhielt ich einen Auftrag für ein plattformunabhängiges Programm, dass so ziemlich auf jedem System (Linux, Windows, Mac) funktionieren sollte. ich hab mich für Qt entschieden und mit QtCreator eine Qt-Anwendung programmiert. Ich habe nur Qt eigene Werkzeuge benützt und keine LIbrarys eingebunden - außer eben die von Qt. Testweise habe ich den QtCreator auf einem Windows installiert (was relativ schwer war, da ich kein Windows System besitze) und das Programm kompiliert. Aus dem Qt-Creator lässt es sich direkt öffnen. Beim manuellen Öffnen jedoch verlangt die exe-file irgendwelche DLLs. Mir ist schon klar, dass ich da die Path Variable umschreiben kann etc, aber ich bräuchte hier eine Möglichkeit um dieses Programm den Standard-Normalverbraucher zukommen zu lassen. Dieser sollte das Programm per Mausklick installieren können. Es sollte quasi eine exe-file herauskommen die überall und auf jeden Windows-Computer funkioniert. Ich hab mir statisches Linken angeschaut, jedoch hat sich trotz CONFIG += static in der .Pro datei nichts an der Größe der exe-file geändert.
von VisualBasic habe ich in Erinnerung, dass es da so Setup-Projekte gibt, welche die nötigen DLLs mitinstallieren. Hat jemand Erfahrung für eine Setup möglichkeit für Qt Apps?
BTW.: ich hab keine Ahnung von Macintosh, Apple oder wie auch immer das jetzt neuerlich heißt. Trotzdem wäre eine eine Mac Anwendung auch toll. Auch in diese Richtung wäre ich für ein Tutorial dankbar, aber die Lauffähgikeit auf Windows steht hier mal im Vordergrund.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 11:45
von brax
Unter Windows reicht es völlig die benötigten dlls in den gleichen Ordner wie die exe zu legen. In Deinem Fall sind die benötigten dlls wohl die Qt dlls.
Was den Installer angeht würde ich nsis empfehlen:
http://sourceforge.net/projects/nsis/
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 14:27
von jw202
hallo,
ich habe es jetzt auf einem 64 Bit Windows 7 kompiliert. Folgende dlls müssen im selben Ordner sein, damit das Programm lauffähig ist.
libgcc_s_dw2-1.dll
mingwm10.dll
QtCored4.dll
QtGuid4.dll
QtSqld4.dll
nun habe ich das Programm auf einen anderen Computer (Windows XP 32 Bit) getestet. Die grafische Oberfläche funktionierte zwar, allerdings ließen sämtliche Funktionen (unter anderem QPrinter und die Sqlite Datenbank) zu wünschen übrig. Liegt das am unterschiedlichen System 32 Bit und 64Bit, oder liegt es daran dass die QtCreator nicht installiert ist?
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 17:13
von brax
Ehrlich gesagt ist "läßt zu wünschen übrig" eine reichlich ungenaue Fehlerbeschreibung.
64/32Bit wäre nur ein Problem, wenn Du das Programm für 64Bit kompiliert hättest. Dann würde es aber auf dem XP gar nicht erst starten.
Wenn ich mir die Dateinamen der dlls angucke, scheinst Du allerdings einen Debug-Build gemacht zu haben. Versuch das ganze nochmal als Release zu kompilieren und teste es damit mal.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 18:27
von jw202
damit ist gemeint, dass Signale und Buttons funktionieren. man sieht auch die Benutzeroberfläche. Aber ich bekomme keine Daten aus der Datenbank und QPrinter sollte eine PDF erstellen aber ich bekomm ein leeres weißes dokument.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 20:08
von harry_m
Die Datenbank wird wohl über ein Plugin funktionieren. Mit der Plugin Verwaltung habe ich erst vor kurzem kämpfen müssen. Wenn man alles endlich richtig gemacht hat, scheint alles logisch und selbstverständlich. Ich habe mich über die Kleinigkeiten maßlos geärgert: so, dass ich beschlossen habe, das ganze "drumherum" zusammen zu schreiben. Aber noch bin ich nicht so weit.
Lese mal hier:
http://doc.qt.nokia.com/4.7-snapshot/de ... ugins.html
es ist wirklich alles wichtige drin. Habe ich später selbst feststellen müssen. Vor allem, sehe dir genau an, was hier herauskommt:
QLibraryInfo::location(QLibraryInfo::PluginsPath),
QCoreApplication::applicationDirPath()
und benutze dann
QCoreApplication::setLibraryPaths()
um deine Applikation richtig zu konfigurieren.
Ganz wichtig!!!
QCoreApplication::applicationDirPath() gibt nur bei einer ".exe" Datei den richtigen Pfad aus: bei einer ".dll" ist es NICHT der Fall. Ich habe ein ActiveX Control gebastelt und habe angenommen, dass "QCoreApplication::applicationDirPath()" mir den Pfad zurück liefert, wo sich die DLL befindet. Weit gefehlt: es war Pfad des IE, der dieses Control aufgerufen hat.
Die nächste Gemeinheit bei den Plugins: wenn diese Fehlen, passiert eben nix. Fehlt irgendeine Bibliothek, gibt es einen Hinweis in Form eines Absturzes, wo sogar zu lesen ist, was genau fehlt. Bei den fehlenden Plugins fehlt nur die Funktion.
Bei dir bin ich mir absolut sicher, dass es sich hier wieder mal um das fehlende SQL-Plugin handelt.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 22:24
von jw202
es gibt wieder Neuigkeiten:
1) ich habe es mit Release und Debug von Qt 4.8 und 4.7 getestet und bei allen gibt es diesselbe Reaktion. Es wird wohl an den Plugins liegen
2) Sofern ich es mit dem QtCreator öffne, sind die Umgebungsvariablen derartig eingestellt, dass ich das File ohne DLLs im selben öffnen kann. Wenn ich die Datei händisch öffne, dann fragt er nach den DLLs. Sind diese auch vorhanden, so funktioniert alles ohne Probleme.
3) auf einem Windows XP ohne QtCreator Installation geht es mit den DLLs im selben Ordner zwar öffnen, jedoch funktioniert das Datenbank-Plugin garnicht und der QPrinter liefert eine leere Ausgabe.
Btw, ich habe SQL mit Qt += sql in der .pro Datei eingebunden.
Mir steht heute leider kein Windows mehr zur Verfügung. Muss morgen weiter schauen.
Btw wäre statisches Linken eine Alternative? Weil wenn ich das File irgendwie statisch Linken könnte, dann wäre es zwar ultra-riesig aber dafür bräuchte ich nicht 100 Dateien extra mitschleppen.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 8. August 2012 22:58
von harry_m
jw202 hat geschrieben:
Btw, ich habe SQL mit Qt += sql in der .pro Datei eingebunden.
Das reicht aber nicht. Die SQL Plugins befinden sich im Verzeichnis
.../plugins/sqldriver (oder ähnlich, weiß jetzt nicht auf Anhieb...)
Es muss sichergestellt werden, dass diese Plugins bei der Ausführung genau so bekannt gegeben werden. Sprich:
..runtimeverzeichnis/plugin
und in diesem Verzeichnis muss genau so ein Unterverzeichnis
/sqldriver
angelegt werden: dorthin gehören die Plugins.
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 9. August 2012 06:30
von Christian81
Falsch.
Das Verzeichnis 'sqldrivers' (und auch andere Plugin-Verzeichnisse wenn man sie benötigt) muss direkt dorthin wo das Executable liegt. Hatten wir aber schon zig mal ...
Re: Mindestvoraussetzung für die Lauffähigkeit Qt + Setup
Verfasst: 9. August 2012 11:54
von harry_m
Komisch.
Ausgerechnet gestern habe ich es machen müssen: und stellte fest, dass es so funktioniert, wie ich es beschrieben habe.