Quantcast
Channel: Jobs
Viewing all articles
Browse latest Browse all 18427

PostgreSQL drivers build and use

$
0
0
I am trying to get a Qt connection to PostgreSQL. I have made a few changes to get things to work So I’ll give the details so you know where I am and how I got there. Current Sys config: Windows 8 64-bit postgresql-9.2.4 Qt 5.0.2 mingw 32- bit First I build the ..\5.0.2\Src\qtbase\src\plugins\sqldrivers\psql\psql.pro to point the psql.pro to my PostgreSQL I added the following to my psql.pro INCLUDEPATH += $$quote("C:/pgsql/include/") But when I did that I got .. \mingw\i686-w64-mingw32\include\sys\timeb.h:90: error: previous definition of ‘struct timespec’ Which is a conflict between the two following defines. One from Qt and another from PostgreSQL timeb.h #ifndef _TIMESPEC_DEFINED #define _TIMESPEC_DEFINED struct timespec {   time_t  tv_sec;   /* Seconds */   long    tv_nsec;  /* Nanoseconds */ }; pgsql\include\pthread.h #ifndef HAVE_STRUCT_TIMESPEC #define HAVE_STRUCT_TIMESPEC 1 struct timespec {         long tv_sec;         long tv_nsec; }; #endif /* HAVE_STRUCT_TIMESPEC */ To fix this I added this to my psql.pro DEFINES += HAVE_STRUCT_TIMESPEC This build but for some strange reason put the files in a new folder C:\plugins\sqldrivers\ libqsqlpsql.a libqsqlpsqld.a qsqlpsql.dll qsqlpsqld.dll I copied them to here ..\5.0.2\mingw47_32\plugins\sqldrivers\ When I try and use this in QT now I am getting the following. The code  qDebug() << "Available drivers: " << QSqlDatabase::drivers();   *db =  QSqlDatabase::addDatabase("QPSQL");   qDebug() << "addDatabase() " << (db->isValid() ? "VALID" : "ERROR");   db->setUserName("postgres");   db->setPassword("postgres");   db->setDatabaseName(DBName);   db->open(); gives me the following errors: Available drivers: ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7") QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 addDatabase() ERROR Available drivers: ("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7") can't find linker symbol for virtual table for `QSqlDriver' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QSqlDriver' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QSqlDriver' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QSqlDriver' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QSqlDriver' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QObjectData' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QObjectData' value found `QSqlDatabasePrivate::shared_null()::dr' instead can't find linker symbol for virtual table for `QObjectPrivate' value found `QSqlDatabasePrivate::shared_null()::dr' instead QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7 Debugging has finished Have I build the PostgreSQL drivers incorrectly? Do I need to do something other than place the drivers into the \plugins\sqldrivers\ dir? edit I have just tried putting QTPLUGIN += qsqlpsql into my test.pro file but it does not seem to have any affect.

Viewing all articles
Browse latest Browse all 18427

Trending Articles