Russian Qt Forum
Ноябрь 22, 2024, 11:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPSQL для PostgreSQL 9.0 под WinXP x64 [РЕШЕНО]  (Прочитано 12319 раз)
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« : Март 07, 2011, 20:12 »

Не удаётся скомпилировать драйвер для PostgreSQL 9.0 под WinXP x64
Qt 4.7.1
Creator 2.1.0
Обращаю внимание - и сервер и система 64 бита.

Компилирование в 32 бит проходило без всяких проблем.
Все пути прописаны.
Изменения в исходники драйвера для поддержки версии выше 8.2 внесены - всё успешно компилировалось и работало.

Пробовал различные варианты.
Из командной строки :
Цитировать
C:\Qt\4.7.1\src\plugins\sqldrivers\psql>qmake "INCLUDEPATH+=C:/PostgreSQL/9.0/in
clude/" "LIBS+=C:/PostgreSQL/9.0/lib/libpq.lib" psql.pro

C:\Qt\4.7.1\src\plugins\sqldrivers\psql>make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.7.1/src/plugins/sqldrivers/psql'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_EVAL -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT
_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMX
...skiped...
Creating library file: c:\Qt\4.7.1\plugins\sqldrivers\libqsqlpsqld4.a
tmp/obj/debug_shared/qsql_psql.o: In function `qMakeError':
C:\Qt\4.7.1\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:
176: undefined reference to `PQerrorMessage'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\4.7.1\src\plugins\sqldrivers\psql/../../.
./sql/drivers/psql/qsql_psql.cpp:186: undefined reference to `PQresultStatus'
tmp/obj/debug_shared/qsql_psql.o:C:\Qt\4.7.1\src\plugins\sqldrivers\psql/../../.
./sql/drivers/psql/qsql_psql.cpp:190: undefined reference to `PQntuples'
tmp/obj/debug_shared/qsql_psql.o: In function `qDeallocatePreparedStmt':
C:\Qt\4.7.1\src\plugins\sqldrivers\psql/../../../sql/drivers/psql/qsql_psql.cpp:
254: undefined reference to `PQexec'
...skiped...
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlpsqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.7.1/src/plugins/sqldrivers/psql'
mingw32-make: *** [debug-all] Error 2
Т.е. C:\PostgreSQL\9.0\include\ не видны не смотря на то что указаны...
Что подтверждается открыв проект в Creator -
#include <libpq-fe.h>
#include <pg_config.h>
No such file or directory

Пробую компилировать из Creatora добавив в проект
Цитировать
INCLUDEPATH+= C:/PostgreSQL/9.0/include
LIBS+= C:/PostgreSQL/9.0/lib/libpq.lib
Получаю:
Цитировать
c:/qt/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lpq
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlpsqld4.dll] Error 1
mingw32-make: *** [debug-all] Error 2
The process "C:\QT\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project psql (target: Desktop)
When executing build step 'Make'
Дальше пробую:
Цитировать
INCLUDEPATH+= C:/PostgreSQL/9.0/include
LIBS+=-LC:/PostgreSQL/9.0/lib -lpq
Итог:
Цитировать
C:/PostgreSQL/9.0/lib/libpq.dll: file not recognized: File format not recognized
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlpsqld4.dll] Error 1
mingw32-make: *** [debug-all] Error 2
The process "C:\QT\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project psql (target: Desktop)
When executing build step 'Make'

Кто-нибудь пробовал скомпилировать под 64 бит?
В чём тут загвоздка? MinGW?
« Последнее редактирование: Март 12, 2011, 10:20 от chagovets » Записан
chagovets
Новичок

Offline Offline

Сообщений: 24


Просмотр профиля
« Ответ #1 : Март 10, 2011, 15:57 »

Ну раз ни кто не пробовал тогда расскажу Улыбающийся
Проблема конечно же заключается в несовместимости 32-х битных библиотек Qt и 64-х битных самого x64 Postgres 9.
Решил собрать Qt 4.7.2 под x64 (кстати изменения для версий Postgres выше 8.2, в том числе и 9 в 4.7.2 уже внесены).

С MinGW собрать x64 Qt не удаётся ни под каким соусом - этот вываливается с ошибками не смотря ни на какие танцы с бубном, этот же компилит только 32 битный код.

Ни чего не осталось как использовать компилятор MS...
Собственно всё описано тут.
После сборки Qt 4.7.2 x64 драйвер для Postgres 9 x64 собрался без вопросов.

P.S. Если кому нужны x64 Qt 4.7.2 и Qt Creator 2.1.0 - обращайтесь
« Последнее редактирование: Март 12, 2011, 10:27 от chagovets » Записан
evgeniy
Гость
« Ответ #2 : Сентябрь 05, 2011, 15:27 »

Спасибо! Очень полезная информация.
Записан
Josefina
Гость
« Ответ #3 : Сентябрь 15, 2014, 18:30 »

Апну темку, вдруг кому пригодится) я решила данную проблему иначе-установила 32х-битный постгре. Драйвер успешно скомпилися))
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #4 : Сентябрь 16, 2014, 18:17 »

Где-то встречал, что разрядность PostgreSQL и Qt должны совпадать.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.