sql driver not loaded

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

sql driver not loaded

Beitrag von anno1988 »

Hallo zusammen,
ich habe ein Problem mit dem Sqlite Driver von Qt.

Und zwar wenn ich bei mir auf dem entwicklungssystem mein programm starte wird der sql driver ohne probleme geladen.

da habe ich noch die qt version 4.5 mit dem qt creator 1.0.0.

Auf dem, anderen testsystem (ist alles windows xp) hingegen habe ich das neue 4.5.2 mit dem neusten qt creator installiert.

allerdings kann auf dem neuen system der sqlite treiber einfach nicht gefunden werden. Allerdings liegen die dateien "qsqlite4.dll" und "qsqlited4.dll" im "C:\Qt\2009.03\qt\plugins\sqldrivers" ordner.

was ich denke, dass es in diesem punkt passen sollte.

hier mal meine umgebungsvariable "PATH" vom windows xp:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

es ist schon sehr komisch, dass das nicht gefunden werden kann.

wenn ich die beiden dateien allerdings in den ordner lege, in dem die compilierte exe-datei liegt funktioniert es auch nicht.

ich hoffe mir kann da jemand helfen.

ich starte auf dem neuen system die exe ohne die IDE. also ich habe einfach mal zum testen die fehlenden dll dateien in den installationsordner der exe-datei kopiert und gestartet. der rest funktioniert auch alles, bis auf das laden des treibers.

gruß anno1988
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

1.) Mit was ist der 2te SQL Treiber kompiliert worden.
2.) Hast es es schon probiert, den Treiber am Testsystem (WinXP) in einem Unterordner namens "sqldrivers" der *.EXE Datei abzulegen?

LG NoRulez
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

NoRulez hat geschrieben:1.) Mit was ist der 2te SQL Treiber kompiliert worden.

LG NoRulez
Der Treiber auf dem neuen Testsystem ist ganz normal von der Installation des Qt Frameworks. compiliert habe ich diesen nicht.
NoRulez hat geschrieben: 2.) Hast es es schon probiert, den Treiber am Testsystem (WinXP) in einem Unterordner namens "sqldrivers" der *.EXE Datei abzulegen?
Nein, das ahbe ich bis jetzt noch nicht versucht. Ich hatte nur mal versucht diesen in einem Unterordner plugins abzulegen. aber das probiere ich mal aus.

edit:

was ich allerdings nicht ganz verstehe. auf meinem bisherigen system läuft die exe-datei auch ohne ein kopieren der treiber-dll-datei in ein verzeichnis.
auf dem neuen system macht es das standardmäßig hingegen nicht.

warum es da so einen unterschied gibt, weiß ich natürlich nicht.
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Falls Du ihn noch nicht hast, lade Dir mal den Dependency Walker runter und ziehe den SQL Treiber in das Fenster.
Vielleicht sind irgendwelche Abhängigkeiten offen.

LG NoRulez

Edit: Was mir anfangs auch hin und wieder passiert ist, ist das ich vergessen habe die mingwm10.dll in das Verzeichnis der *.exe zu kopieren
Zuletzt geändert von NoRulez am 27. August 2009 09:44, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

anno1988 hat geschrieben:
was ich allerdings nicht ganz verstehe. auf meinem bisherigen system läuft die exe-datei auch ohne ein kopieren der treiber-dll-datei in ein verzeichnis.
auf dem neuen system macht es das standardmäßig hingegen nicht.
Weil die Qt-Installdir defaultmässig durchsucht wird.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

NoRulez hat geschrieben: Edit: Was mir anfangs auch hin und wieder passiert ist, ist das ich vergessen habe die mingwm10.dll in das Verzeichnis der *.exe zu kopieren
also bei mir wurde das so angemerkt und eine fehlermeldung ausgegeben.

ohne diese datei startet mein programm gar nicht.
Christian81 hat geschrieben:
anno1988 hat geschrieben:
was ich allerdings nicht ganz verstehe. auf meinem bisherigen system läuft die exe-datei auch ohne ein kopieren der treiber-dll-datei in ein verzeichnis.
auf dem neuen system macht es das standardmäßig hingegen nicht.
Weil die Qt-Installdir defaultmässig durchsucht wird.
naja, aber macht es dann einen unterschied, mit welcher qt version ich das programm compiliert und später auf einem anderen rechner ausführe?

bsp.:

- compiliert mit der qt version 4.5 und das verzeichnis ist c:\qt\2009.01

-ausgeführt auf einem anderen rechner mit qt version 4.5.2 aus dem verzeichnis c:\qt\2009.03

meiner meinung nach sollte das ja eigentlich irgendwo in der registry stehen, dass immer das richtige verzeichnis gewählt wird.

...oder ist das nicht so und das programm sucht auch auf dem neuen system nach dem ordner c:\qt\2009.01 und findet dann aber ja nichts.
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

Warum kopierst Du die entsprechenden DLL's in das Verzeichnis deiner EXE Datei?

LG NoRulez
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

NoRulez hat geschrieben:Warum kopierst Du die entsprechenden DLL's in das Verzeichnis deiner EXE Datei?

LG NoRulez
ja, das mache ich noch, trotzdem ist es ja eleganter wie ich finde, wenn man das framework installiert und man dann einfach das programm starten kann ohne noch groß dateien herumkopieren zu müssen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

anno1988 hat geschrieben: naja, aber macht es dann einen unterschied, mit welcher qt version ich das programm compiliert und später auf einem anderen rechner ausführe?
Nein - wieso? Das Qt-Install-Dir ist eben ein zusätzliches Suchdirectory für die Plugins. Wo ist das Problem?
Immer wieder der gleiche Müll... http://doc.trolltech.com/4.5/plugins-ho ... extensions
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag von NoRulez »

anno1988 hat geschrieben:meiner meinung nach sollte das ja eigentlich irgendwo in der registry stehen, dass immer das richtige verzeichnis gewählt wird.

...oder ist das nicht so und das programm sucht auch auf dem neuen system nach dem ordner c:\qt\2009.01 und findet dann aber ja nichts.
Es wird nicht in der Registry gesucht sondern in den Pfaden die mittels PATH gesetzt sind.
Wie auch bei den restlichen Libraries udgl. wird mehr oder weniger das erst beste genommen.
anno1988 hat geschrieben: naja, aber macht es dann einen unterschied, mit welcher qt version ich das programm compiliert und später auf einem anderen rechner ausführe?
Du kannst beispielsweise nicht ein mit Qt 4.4.3 kompiliertes Programm mit Qt 4.5.2 DLL's ausführen.
Zwischen Qt 4.5.x 'er weiß ich es nicht mit Gewissheit, würde jedoch auch Sinn machen.

LG NoRulez
Markus
Beiträge: 105
Registriert: 31. Januar 2005 16:21

Beitrag von Markus »

Unter Deploying an Application on Windows ist eigentlich alles erklärt, besonders im Abschnitt Qt Plugins.
Antworten