Installationsprogramm erstellen mit Qt Non-Commercial?
Installationsprogramm erstellen mit Qt Non-Commercial?
Hallo zusammen,
Als Neuling hier und zu Qt möchte ich erst einmal vielen Dank für dieses Forum sagen, gefällt mir sehr gut!
Natürlich habe ich auch noch etwas auf dem Herzen: Ich habe soeben mit der Non-Commercial-Version der Qt ein erstes kleines Projekt erstellt und für Windows und Linux erfolgreich kompiliert. So weit, so gut. Wie aber gehe ich nun vor, wenn ich dieses Programm weitergeben möchte? Statisch kann ich die Non-Commercial scheinbar nicht linken, wie ich einem anderen Beitrag hier entnommen habe.
Welche Dateien muß / darf ich also weitergeben, und wohin müssen diese jeweils kopiert werden? Ein erster Versuch, die qt-mtnc321.dll und qsqlite.dll (ich verwende QSQLITEX zum DB-Zugriff) in das Programmverzeichnis zu kopieren, ist daran gescheitert, daß ich keine Verbindung zur Datenbank erhalte: "Driver not loaded".
EDIT: Ein Installationsprogramm möchte ich in erster Linie für die Windows-Benutzer erstellen.
Ich würde mich freuen, wenn mir hier der entscheidende Hinweis gegeben wird!
Als Neuling hier und zu Qt möchte ich erst einmal vielen Dank für dieses Forum sagen, gefällt mir sehr gut!
Natürlich habe ich auch noch etwas auf dem Herzen: Ich habe soeben mit der Non-Commercial-Version der Qt ein erstes kleines Projekt erstellt und für Windows und Linux erfolgreich kompiliert. So weit, so gut. Wie aber gehe ich nun vor, wenn ich dieses Programm weitergeben möchte? Statisch kann ich die Non-Commercial scheinbar nicht linken, wie ich einem anderen Beitrag hier entnommen habe.
Welche Dateien muß / darf ich also weitergeben, und wohin müssen diese jeweils kopiert werden? Ein erster Versuch, die qt-mtnc321.dll und qsqlite.dll (ich verwende QSQLITEX zum DB-Zugriff) in das Programmverzeichnis zu kopieren, ist daran gescheitert, daß ich keine Verbindung zur Datenbank erhalte: "Driver not loaded".
EDIT: Ein Installationsprogramm möchte ich in erster Linie für die Windows-Benutzer erstellen.
Ich würde mich freuen, wenn mir hier der entscheidende Hinweis gegeben wird!
moin,
setup programm gibt es hier kostet
nicht die welt, ich benutz es selber
wenn du das geld nicht hast schau einfach mal bei sf.net nach
mit was wurde die non-comercial version erstellt?
wenn mit MS VS C++ .Net musst du die msvcp71.dll
und die msvcr71.dll mit leifern (einfach ins programm-
verzeichnis kopieren und natürlich die dlls von qt, also
qt-mtnc321.dll und die qsqlite.dll)
setup programm gibt es hier kostet
nicht die welt, ich benutz es selber
wenn du das geld nicht hast schau einfach mal bei sf.net nach
mit was wurde die non-comercial version erstellt?
wenn mit MS VS C++ .Net musst du die msvcp71.dll
und die msvcr71.dll mit leifern (einfach ins programm-
verzeichnis kopieren und natürlich die dlls von qt, also
qt-mtnc321.dll und die qsqlite.dll)
Als Installer dachte ich an InnoSetup - ist kostenlos für meine Zwecke und ich habe bereits gute Erfahrungen damit gemacht.
Womit die Qt erstellt wurde, kann ich leider nicht sagen - es handelt sich um die bei dem von Jasmin Blanchette verfassten Buch "C++ GUI Programming with Qt3" mitgelieferte Version.
Das Programm wurde mit VC++ 6 erstellt, die msvcp60.dll habe ich bereits beigefügt und wie die beiden Qt-DLLs (qsqlite.dll, qt-mtnc321.dll) ins Programmverzeichnis kopiert. Jedoch besteht hierbei das Problem, daß die Verbindung zur SQLite-DB nicht erstellt werden kann, sh. oben. Kann es sein, daß die Qt den SQLite-Treiber in einem speziellen Verzeichnis erwartet?
Womit die Qt erstellt wurde, kann ich leider nicht sagen - es handelt sich um die bei dem von Jasmin Blanchette verfassten Buch "C++ GUI Programming with Qt3" mitgelieferte Version.
Das Programm wurde mit VC++ 6 erstellt, die msvcp60.dll habe ich bereits beigefügt und wie die beiden Qt-DLLs (qsqlite.dll, qt-mtnc321.dll) ins Programmverzeichnis kopiert. Jedoch besteht hierbei das Problem, daß die Verbindung zur SQLite-DB nicht erstellt werden kann, sh. oben. Kann es sein, daß die Qt den SQLite-Treiber in einem speziellen Verzeichnis erwartet?
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Vielen Dank für den Hinweis. Leider hat auch das Setzen des QTDIR nicht den erhofften Erfolg gebracht, wie auch QApplication::addLibraryPath(".") nichts genützt hat
Selbst ein Registry-Eintrag, den ich gefunden habe in HKLM/Software/Trolltech, brachte keine Veränderung.
Ich bin ratlos.
Vielleicht hilft der Quellcode, mir zu helfen:
Selbst ein Registry-Eintrag, den ich gefunden habe in HKLM/Software/Trolltech, brachte keine Veränderung.
Ich bin ratlos.
Vielleicht hilft der Quellcode, mir zu helfen:
Code: Alles auswählen
#include <qapplication.h>
#include <qsqldatabase.h>
#include "form1.h"
bool createConnection()
{
QSqlDatabase *db = QSqlDatabase::addDatabase("QSQLITEX");
db->setDatabaseName("s4s.db");
if (!db->open())
{
db->lastError().showMessage();
return false;
}
return true;
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QApplication::addLibraryPath(".");
if (!createConnection())
return 1;
frmMain *dialog = new frmMain();
app.setMainWidget(dialog);
dialog->show();
return app.exec();
}
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ja, die Datei sqlite.dll stammt von der gleichen Qt-Version. Im Library-Path hatte ich testweise auch bereits den absoluten Pfad stehen, und die Datei sqlite.dll sowohl im angegeben Verzeichnis als auch zusätzlich unter plugins/sqldrivers, leider ohne Erfolg.
Die Meldung "Driver not loaded" an sich ist ja relativ wenig aussagekräftig, gibt es dabei keine Möglichkeit, erweiterte Debug-Informationen ausgeben zu lassen?
Die Meldung "Driver not loaded" an sich ist ja relativ wenig aussagekräftig, gibt es dabei keine Möglichkeit, erweiterte Debug-Informationen ausgeben zu lassen?
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Also unter Linux geht das, oder auch mit einer als Debug gebauten Version, mit der Version wohl kaum.
Mh, also das ist sehr seltsam, geht es denn, wenn du das Qt installierst und dann ohne Library Path? Weil dann sollte er nämlich direkt im QTDIR/plugins/sqldrivers nachsehen. Achja, er lädt auch keine Plugins, wenn evtl. Abhänigkeiten fehlen. Wobei er das SQLite Plugin statisch gegen sqlite linkt sollte das aber ehr nicht der Fall sein.
Du, sonst habe ich leider keine Ahnung. Teste es aus unter Linux und mache es dann genauso unter Windows. Übrigens ich hatte mich mit dem Pfad mal verschieben, habe plugins/sqldriver genommen, bis ich darauf kam, da verging schon einiges an Zeit. Die Plugins sind ehrlich gesagt ziemlich dumm in Qt. Es gibt zwar immer eine Lösung, aber bisher noch keine wirklich gute. Selbst statisch Linken ist dumm, weil dann die Abhänigkeiten von MySQL oder anderen immer vorhanden sein muss.
Guck vielleicht auch nochmal in qtforum.org
Mh, also das ist sehr seltsam, geht es denn, wenn du das Qt installierst und dann ohne Library Path? Weil dann sollte er nämlich direkt im QTDIR/plugins/sqldrivers nachsehen. Achja, er lädt auch keine Plugins, wenn evtl. Abhänigkeiten fehlen. Wobei er das SQLite Plugin statisch gegen sqlite linkt sollte das aber ehr nicht der Fall sein.
Du, sonst habe ich leider keine Ahnung. Teste es aus unter Linux und mache es dann genauso unter Windows. Übrigens ich hatte mich mit dem Pfad mal verschieben, habe plugins/sqldriver genommen, bis ich darauf kam, da verging schon einiges an Zeit. Die Plugins sind ehrlich gesagt ziemlich dumm in Qt. Es gibt zwar immer eine Lösung, aber bisher noch keine wirklich gute. Selbst statisch Linken ist dumm, weil dann die Abhänigkeiten von MySQL oder anderen immer vorhanden sein muss.
Guck vielleicht auch nochmal in qtforum.org
Vielen Dank für Deine Mühe!
Leider muss ich sagen, daß ich unter Linux entwickelt habe und dort keine Probleme damit hatte.
Unter Windows habe ich nun 2 verschiedene Rechner zum Testen: Der eine, mit dem ich die .EXE kompiliert habe - dort ist natürlich auch die Qt installiert.
Auf dem zweiten Rechner habe ich gerade testweise die gesamte Qt hinüberkopiert und QTDIR entsprechend gesetzt. Komischerweise funktioniert es nicht einmal damit.
Ich werde mich dann einmal an qtforum.org wenden. Vielen Dank noch einmal für alle, die hier versucht haben, mir weiterzuhelfen!
Leider muss ich sagen, daß ich unter Linux entwickelt habe und dort keine Probleme damit hatte.
Unter Windows habe ich nun 2 verschiedene Rechner zum Testen: Der eine, mit dem ich die .EXE kompiliert habe - dort ist natürlich auch die Qt installiert.
Auf dem zweiten Rechner habe ich gerade testweise die gesamte Qt hinüberkopiert und QTDIR entsprechend gesetzt. Komischerweise funktioniert es nicht einmal damit.
Ich werde mich dann einmal an qtforum.org wenden. Vielen Dank noch einmal für alle, die hier versucht haben, mir weiterzuhelfen!
So, auf qtforum.org bin ich auf folgenden interessanten Link gestoßen: http://doc.trolltech.com/qq/qq10-window ... ml#plugins
Ich habe also einen Denkfehler begangen: Ich hatte die qsqlite.dll im Verzeichnis <anwendung>\plugins\sqldrivers platziert - Qt jedoch erwartete sie im Verzeichnis <anwendung>\sqldrivers. Nun funktioniert es, auch ohne den addLibraryPath-Aufruf.
Ich habe also einen Denkfehler begangen: Ich hatte die qsqlite.dll im Verzeichnis <anwendung>\plugins\sqldrivers platziert - Qt jedoch erwartete sie im Verzeichnis <anwendung>\sqldrivers. Nun funktioniert es, auch ohne den addLibraryPath-Aufruf.
-
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ja, das steht darin. Das gibt aber das Quellverzeichnis an, aus dem die betreffende Datei kopiert wird:FlorianBecker hat geschrieben:Ahja. Das ist aber nicht die allgemein gültige Lösung. Außerdem steht in der Anleitung: %QTDIR%\plugins\imageformats\
Es wird also im Anwendungsverzeichnis ein Unterverzeichnis "imageformats" erstellt und darin die Plugin-DLL kopiert. Ich nehm also an, daß meine Lösung damit konform geht.http://doc.trolltech.com/qq/qq10-windows-deployment.html#plugins hat geschrieben: So to make the JPEG plugin available to our showimg application, we just have to change directory to the application's directory and copy over the appropriate DLL:Code: Alles auswählen
mkdir imageformats copy %QTDIR%\plugins\imageformats\qjpeg100.dll imageformats
StimmtFlorianBecker hat geschrieben: Naja, Hautpsache deine Lösung geht.