Compilation d'un programme avec QPSQL
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:
Code:
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 |
Ensuite, j'ai essayé de compiler un petit code histoire de vérifier la connexion à ma BD avec Qt. Voici le code:
Code:
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 le .pro:
Code:
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 += |
voici les erreurs:
Citation:
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'
Une idée??
Merci d'avance les amis pour toute aide!