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 : 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
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
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 : 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 +=
voici les erreurs:
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!