Bonjour,
Je travaille avec:
* Windows XP SP2
* Qt 4.5.1
* Postgresql 8.4
J'essais d'accéder à une BD Postgresql/Postgis à partir de Qt. J'ai suivi la doc de Qt pour installer le driver sql QPSQL et tout est allé très bien quand j'ai compilé comme suit:
Ensuite, j'ai essayé de compiler un petit code histoire de vérifier la connexion à ma BD avec Qt. Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 cd %QTDIR%\src\plugins\sqldrivers\psql qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro mingw32-make //je n'ai pas utilisé nmake car elle n'est pas reconnue dans mon qtcommandprompt
voici le .pro:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 #include "C:/d/dev/qt/451/src/sql/drivers/psql/qsql_psql.h" #include <QApplication> #include <QtSql/QSqlDatabase> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication app(argc, argv); app.addLibraryPath("C:/d/dev/qt/451/src/plugins/sqldrivers"); QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL"); db.setHostName("localhost"); db.setUserName("qpsql"); db.setPassword(""); db.setPort(5433); QString msg1, msg2; bool ok = db.open(); if(ok==true) {msg1 = "ok";} else {msg1 = "Unable to Connect";}; bool available = db.isDriverAvailable(db.driverName()); if(available==true) {msg1 += db.driverName() + " is available ";} else {msg1 += db.driverName() + " is NOT available ";}; QMessageBox::critical(0,"Connection", msg1); QString pat; foreach (QString path, app.libraryPaths()) { pat += path + "\n";} QMessageBox::critical(0, "les paths", pat); QStringList ql = db.drivers(); for (int i=1;i<ql.size();i++) { msg2 += ql.at(i);} QMessageBox::critical(0,"Drivers", msg2); return app.exec(); }
voici les erreurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 TEMPLATE = app Qt += sql TARGET = qtpgtest DEPENDPATH += . INCLUDEPATH += C:/d/dev/test/qtpgtest/ \ C:/d/dev/qt/451/include/QtSql/ \ . LIBS += C:/PostgreSQL/8.4/lib/libpq.lib \ C:/d/dev/qt/451/src/plugins/sqldrivers/psql/debug/libqsqlpsqld4.a SOURCES += main.cpp #HEADERS += #FORMS +=
Une idée??C:/d/dev/test/qtpgtest/main.cpp:11: undefined reference to `_imp___ZN12QSqlDatab
ase17defaultConnectionE'
debug/main.o(.text+0x260):C:/d/dev/test/qtpgtest/main.cpp:11: undefined reference to `_imp___ZN12QSqlDatabase11addDatabaseERK7QStringS2_'
debug/main.o(.text+0x32d):C:/d/dev/test/qtpgtest/main.cpp:12: undefined reference to `_imp___ZN12QSqlDatabase11setHostNameERK7QString'
debug/main.o(.text+0x3a7):C:/d/dev/test/qtpgtest/main.cpp:13: undefined reference to `_imp___ZN12QSqlDatabase11setUserNameERK7QString'
debug/main.o(.text+0x421):C:/d/dev/test/qtpgtest/main.cpp:14: undefined reference to `_imp___ZN12QSqlDatabase11setPasswordERK7QString'
debug/main.o(.text+0x489):C:/d/dev/test/qtpgtest/main.cpp:15: undefined reference to `_imp___ZN12QSqlDatabase7setPortEi'
debug/main.o(.text+0x4b6):C:/d/dev/test/qtpgtest/main.cpp:18: undefined reference to `_imp___ZN12QSqlDatabase4openEv'
debug/main.o(.text+0x515):C:/d/dev/test/qtpgtest/main.cpp:23: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
debug/main.o(.text+0x532):C:/d/dev/test/qtpgtest/main.cpp:23: undefined reference to `_imp___ZN12QSqlDatabase17isDriverAvailableERK7QString'
debug/main.o(.text+0x5be):C:/d/dev/test/qtpgtest/main.cpp:25: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
debug/main.o(.text+0x6d0):C:/d/dev/test/qtpgtest/main.cpp:27: undefined reference to `_imp___ZNK12QSqlDatabase10driverNameEv'
debug/main.o(.text+0xbcd):C:/d/dev/test/qtpgtest/main.cpp:35: undefined reference to `_imp___ZN12QSqlDatabase7driversEv'
debug/main.o(.text+0xeb4):C:/d/dev/test/qtpgtest/main.cpp:40: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
debug/main.o(.text+0xfb7):C:/d/dev/test/qtpgtest/main.cpp:40: undefined reference to `_imp___ZN12QSqlDatabaseD1Ev'
Merci d'avance les amis pour toute aide!
Partager