ich bekomme mein PostgreSQL unter Windows immer den Fehler "Driver not loaded"
Das bauen des PSQL-Plugins ist nicht gerade einfach, jedoch hat das alles geklappt ohne Fehlermeldung etc. Es genügt nicht das man einfach nur die Dev-Datein installiert, denn reimp macht da was kaputt (lib->a). Und die Lib kann ich nicht verweden, da ich kein msvc sondern mingw habe. Also muss ich PostgreSQL selber kompilieren, damit ich eine saubere libpq.a habe.
Step1:
Installation von Qt4 MinGW [OK]
Setzen der Umgebungsvariablen [OK]
Installation von MSYS-1.0.10.exe [OK]
Entpacken von postgresql-8.3.3.tar.gz [OK]
Step2:
./configure --without-zlib [OK]
make [OK]
make install [OK]
Nun habe ich eine brand neue libpq.a Nun kann ich das plugin neu bauen:
Step3:
qmake -o Makefile "INCLUDEPATH+=C:\msys\local\pgsql\include" "LIBS+=C:\msys\local\pgsql\lib\libpq.a" psql.pro [OK]
make [OK]
Alles läuft ohne Fehlermeldung durch!
nun habe ich auch meine qsqlpsql4.dll
Ich starte mein Test-Programm und bekomme dennoch die Fehlermeldung "Driver not loaded"
NOTE: plugin und programm wurden mit der selben version kompiliert (selbes system und beides im release).
Step4:
Prüfen der dlls und meines Test Programms mit DepencyWalker [failed]
qsqlpsql4.dll benötigt die libpq.dll
kopieren von libpq.dll [OK]
Erneuter Check mit DepencyWalker [OK]
Nun habe ich keine Fehler mehr, Fehlermeldung bleibt jedoch die selbe.
Also Installiere ich mir Filemon.
Step5:
Kopieren des Plugins in jeden Ordner wo den Filemon mir angzeigt [OK]
Fehlermeldung bleibt die gleiche.
So kann mir jemand sagen was ich da falsch mache? Ich sehe in meiner Vorgehensweise keinen Fehler, wenn Qt die dll will, findet Qt die auch. Pfade können also nicht falsch sein. Also gibt es meiner Meinung nach nur 2 Möglichkeiten, entweder mein Programm ist fehlerhaft, oder es ist einfach ein Bug.
Hier ist mein Programm (läuft auf Linux ohne Probleme):
dummy.pro
Code: Alles auswählen
TEMPLATE = app
TARGET = ./bin/dummy
QT += core \
gui \
sql
HEADERS += src/logindialog/logindialog.h \
src/mainwindow/mainwindow.h
SOURCES += src/logindialog/logindialog.cpp \
src/mainwindow/mainwindow.cpp \
src/main.cpp
FORMS += ui/logindialog.ui \
ui/mainwindow.ui
RESOURCES += images/dummy.qrc
MOC_DIR += ./build/moc
RCC_DIR += ./build
OBJECTS_DIR += ./build/obj
CONFIG += warn_on \
qt \
debug
win32:CONFIG += qt \
release
Code: Alles auswählen
db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setDatabaseName("dummy");
db.setUserName("dummy");
db.setPassword("dummy");
db.open();
so long
jd