Bonjour,
J'essaie en vain de connecter un prog QT sous visual c++ à une base de donnée PostgreSQL... et je dois dire que je suis au bord de la crise de nerfs.

Ma config, c'est QT 4.1.1 qui marche impeccable sous visual c++ et PostgreSQL 8.1 qui marche aussi sans pb.

Le probleme : le driver QPSQL qui n'est a priori pas installé...

J'ai tenté la fameuse manip suivante :

configure -plugin-sql-psql -qt-sql-psql
-I C:\Progra~1\PostgreSQL\8.1\include
-L C:\Progra~1\PostgreSQL\8.1\lib
-L C:\Progra~1\PostgreSQL\8.1\lib\libpq.a

cd E:\Qt\4.1.0\src\plugins\sqldrivers\psql
qmake -o Makefile "INCLUDEPATH+=C:\Progra~1\PostgreSQL\8.1\include" "LIBS+=C:\Progra~1\PostgreSQL\8.1\lib C:\Progra~1\PostgreSQL\8.1\lib\ms\libpq.lib" psql.pro
qmake
nmake

rien n'y fait.

J'ai un petit prog pour voir où j'en suis :

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
43
44
#include <QApplication>
#include <QPushButton>
#include <QtSQL>
#include <QMessageBox>
 
int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
 
 
 
           app.addLibraryPath("c:\\Qt\\4.1.1\\plugins\\sqldrivers\\");
		QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
	      db.setHostName("localhost");
		db.setUserName("xxxx");
		db.setPassword("xxxxx");
		db.setPort(5432);
		bool ok = db.open();
 
           QString mess, mess2;
 
           if(ok==true)
		{mess = "ok ";}else
		{mess = "Unable to Connect " ;	};
 
		bool avail = db.isDriverAvailable(db.driverName());
		if(avail==true)
		{mess += db.driverName() + " is AVAILABLE ";}else
		{mess += db.driverName() + " NOT available ";};
 
		QMessageBox::critical(0,"Connection", mess);
		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++){
			mess2 += ql.at(i);}
		QMessageBox::critical(0,"drivers", mess2);
 
        return app.exec();
    }
Le programme est correctement compilé et executé .

Et evidémment, QPSQL n'est pas là et il ne peut pas se connecter...Par contre, j'ai bien QODBC et QODBC3.

Je suis débutant (et autodidacte) et que j'ai de grosses lacunes au niveau des liens avec les bibliotheques et des options de compilations. Je m'efforce de suivre des tutos ou forums sur le net....J'ai bien linké postgre et Qt dans visual (bin, lib et include). J'ai bien inséré Qt += sql dans mon .pro; par contre, j'ai des erreurs si j'y rajoute LIBS += libpq.lib .

Enfin, si je rajoute (comme dans la doc Qt)
#include "c:/Qt/4.1.1/src/sql/drivers/psql/qsql_psql.cpp"
j'ai des warnings du type 'QPSQLDriver::QPSQLDriver : inconsistent dll linkage' et des erreurs fatales de link....sympa.

Je suis au stage de la dépression concernant cette histoire... j'aimerais vraiment savoir ce qui cloche...si une bonne âme aurait une idée....je ne pourrais que m'incliner bien bas. Merci d'avance...