PDA

View Full Version : Problem compiling PostgreSQL driver with Qt-SDK 2010.02.01



NoRulez
9th April 2010, 21:19
Hey @all,

did anybody know the reason why the PostgreSQL driver can't be compiled with the "new" SDK?
When I try to compile the driver i still get the error


c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe:psql.pro: file format not recognized; treating as linker script
c:/qt/2010.02.1/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe:psql.pro:1: syntax error

The psql.pro file isn't changed at all, but here it is:


TARGET = qsqlpsql

HEADERS = ../../../sql/drivers/psql/qsql_psql.h
SOURCES = main.cpp \
../../../sql/drivers/psql/qsql_psql.cpp

unix: {
!isEmpty(QT_LFLAGS_PSQL) {
LIBS *= $$QT_LFLAGS_PSQL
QMAKE_CXXFLAGS *= $$QT_CFLAGS_PSQL
}
!contains(LIBS, .*pq.*):LIBS *= -lpq
}

win32:!contains(LIBS, .*pq.* ) {
!win32-g++:LIBS *= -llibpq
win32-g++:LIBS *= -lpq
LIBS *= -lws2_32 -ladvapi32
}

include(../qsqldriverbase.pri)


I hope someone could help

Best Regards
NoRulez

faldzip
10th April 2010, 06:35
It looks like ld.exe wants to parse psql.pro. How you compile this Postgres plugin?

NoRulez
12th April 2010, 08:18
I've made it as described in the Qt documentation How to Build the QPSQL Plugin on Windows (http://doc.trolltech.com/4.6/sql-driver.html#how-to-build-the-qpsql-plugin-on-windows), but with mingw32-make instead.

Best Regards
NoRulez

faldzip
12th April 2010, 08:48
can you paste exact command you use?

NoRulez
12th April 2010, 15:14
cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\Databases\PostgreSQL\8.4\include" "LIBS+=C:\Databases\PostgreSQL\8.4\lib\libpq.lib" psql.pro
mingw32-make


I also tried the following after reimp, but the same error message occurs


qmake "INCLUDEPATH+=C:\Databases\PostgreSQL\8.4\include" "LIBS+=C:\Databases\PostgreSQL\8.4\lib\libpq.a" psql.pro


Best Regards
NoRulez

faldzip
12th April 2010, 19:51
and what if you try this:


qmake "INCLUDEPATH+=C:\Databases\PostgreSQL\8.4\include" "LIBS+=-LC:\Databases\PostgreSQL\8.4\lib -lpq" psql.pro

NoRulez
13th April 2010, 13:06
OK, thank you

i will try it today in the evening and will give you feedback.

Best Regards
NoRulez

NoRulez
13th April 2010, 20:02
OK, i've tried it and now I get the following error:


Creating library file: c:\Qt\2010.02.1\qt\plugins\sqldrivers\libqsqlpsqld 4.a
tmp/obj/debug_shared/qsql_psql.o: In function `qMakeError':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:176: undefined reference to `PQerrorMessage'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:186: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:190: undefined reference to `PQntuples'
tmp/obj/debug_shared/qsql_psql.o: In function `qDeallocatePreparedStmt':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:254: undefined reference to `PQexec'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:256: undefined reference to `PQresultStatus'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:257: undefined reference to `PQerrorMessage'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:258: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:288: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:316: undefined reference to `PQntuples'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:321: undefined reference to `PQnfields'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:325: undefined reference to `PQftype'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:327: undefined reference to `PQgetvalue'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:328: undefined reference to `PQgetisnull'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:407: undefined reference to `PQunescapeBytea'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:421: undefined reference to `PQgetvalue'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:422: undefined reference to `PQgetisnull'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:434: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:445: undefined reference to `PQcmdTuples'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:451: undefined reference to `PQoidValue'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:464: undefined reference to `PQnfields'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:468: undefined reference to `PQfname'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:470: undefined reference to `PQfname'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:471: undefined reference to `PQftype'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:472: undefined reference to `PQfsize'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:473: undefined reference to `PQfmod'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:481: undefined reference to `PQftype'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:567: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:569: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:572: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:577: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:598: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o: In function `setEncodingUtf8':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:607: undefined reference to `PQexec'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:608: undefined reference to `PQresultStatus'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:609: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o: In function `setDatestyle':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:615: undefined reference to `PQexec'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:616: undefined reference to `PQresultStatus'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:618: undefined reference to `PQerrorMessage'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:619: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o: In function `getPSQLVersion':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:625: undefined reference to `PQexec'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:626: undefined reference to `PQresultStatus'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:628: undefined reference to `PQgetvalue'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:669: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o: In function `~QPSQLDriver':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:703: undefined reference to `PQfinish'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:703: undefined reference to `PQfinish'
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:703: undefined reference to `PQfinish'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:780: undefined reference to `PQconnectdb'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:781: undefined reference to `PQstatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:784: undefined reference to `PQfinish'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:810: undefined reference to `PQfinish'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:828: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:829: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:830: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:835: undefined reference to `PQclear'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:845: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:1247: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:1279: undefined reference to `PQexec'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:1279: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:1305: undefined reference to `PQconsumeInput'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\2010.02.1\qt\src\plugins\sqldriv ers\psql/../../../sql/drivers/psql/qsql_psql.cpp:1308: undefined reference to `PQnotifies'
tmp/obj/debug_shared/qsql_psql.o: In function `Z10qPQfreememPv':
C:\Qt\2010.02.1\qt\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:118: undefined reference to `PQfreemem'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlpsqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/2010.02.1/qt/src/plugins/sqldrivers/psql'
mingw32-make: *** [debug-all] Error 2


Best Regards
NoRulez

faldzip
13th April 2010, 21:38
okay, do you have an libpq.a in your C:\Databases\PostgreSQL\8.4\lib?

NoRulez
14th April 2010, 20:57
yes, i used reimp und dlltool for this

NoRulez
28th April 2010, 16:33
Sorry for pushing.

The problem still exists, did anybody know an other way

Best Regards
NoRulez

junix
9th May 2010, 04:07
I've got the same problem.
So dificult to solve this. I spend several hours trying to build this driver.
Why is so complicated?
Why somebody that has put on the internet available to download?

diplonics
10th May 2010, 12:54
Hi All,
This issue is hanging around as a big problem for anyone using PostgreSQL with QT on windows, I have a post here but have had no response : http://www.qtcentre.org/threads/29888-QPSQL-driver-not-loaded?p=142222#post142222
I have spent 4 days getting the plugin built only to have continuing trouble getting the runtime environment to load it. For the moment someting else has come up so I haven't been able to finish this but when I left it I still couldn't use PostgreSQL with QT on a Windows 7 64-bit platform. The documentation is non-existent in any helpful way, however with enough google searches I eventually got a solution to building the driver. Although I tried so many options I can hardly remember the set of steps that finally worked and that only got the plugin built, I still can't get it to load. What would be really helpful is a more detailed step-by-step guide on how to build and intergrate this plugin on windows rather than the 3 line solution that is currently available. Or even better would be a pre-built windows download of the plugin and guide on how to integrate it in your code. While its easy to propsoe this idea I do understand that its probably not simple, however it would probably require an experienced user to get this done right, which unfortunately I'm not. However, if I can help test a solution I'm more than willing.

NoRulez
10th May 2010, 20:39
I've also Windows 7 64 bit, so i think the problem is to integrate the plugin with the Windows 7 and/or the 64 bit environment.

LG NoRulez