Russian Qt Forum

Программирование => Базы данных => Тема начата: Viktor от Май 18, 2016, 17:44



Название: Сборка драйвера QPSQL
Отправлено: Viktor от Май 18, 2016, 17:44
Знаю, тема заезженная... . Но помогите начинающему программисту. Читал я кучу статей по тому, как собрать QPSQL для дальнейшего подключения к Postgresql... . И вроде всё делал как говорят, но выскакивают ошибки при сборке и всё... .
У меня Win 7, 64 битная
Postgresql 9.3
qt 5.5

Значит в файле psql.pro , который находится по адресу E:\Qt\Qt5.5.1\5.5\Src\qtbase\src\plugins\sqldrivers\psql написал следующие две строчки:

INCLUDEPATH +="C:/PostgreSQL/9.3/include"
LIBS +="C:/PostgreSQL/9.3/lib/libpq.lib"

В файле qsql_psql , который находится по адресу E:\Qt\Qt5.5.1\5.5\Src\qtbase\src\sql\drivers\psql закомментировал следующее и получилось так

HEADERS += $$PWD/qsql_psql_p.h
SOURCES += $$PWD/qsql_psql.cpp

unix|mingw {
    LIBS += $$QT_LFLAGS_PSQL
#    !contains(LIBS, .*pq.*):LIBS += -lpq
#    QMAKE_CXXFLAGS *= $$QT_CFLAGS_PSQL
#} else {
    !contains(LIBS, .*pq.*):LIBS += -llibpq -lws2_32 -ladvapi32
}

Но при сборке появилось 69 ошибок подобного типа
(http://i9.pixs.ru/storage/9/9/1/sdwedspng_7437897_21989991.png) (http://pixs.ru/showimage/sdwedspng_7437897_21989991.png)

может кто подскажет как устранить ошибки или что я делал не так?


Название: Re: Сборка драйвера QPSQL
Отправлено: kai666_73 от Май 18, 2016, 17:53
А чем собираете? мингвой или MSVC?


Название: Re: Сборка драйвера QPSQL
Отправлено: Viktor от Май 19, 2016, 09:29
А чем собираете? мингвой или MSVC?

MinGW 4.9.2 32 bit


Название: Re: Сборка драйвера QPSQL
Отправлено: qate от Май 19, 2016, 10:04
Но при сборке появилось 69 ошибок подобного типа
может кто подскажет как устранить ошибки или что я делал не так?

либу pq не указал при линковке


Название: Re: Сборка драйвера QPSQL
Отправлено: Viktor от Май 19, 2016, 12:14
Но при сборке появилось 69 ошибок подобного типа
может кто подскажет как устранить ошибки или что я делал не так?

либу pq не указал при линковке


Указывал.
2-мя способами пытался собрать. Во всех одни и те же ошибки... .


Название: Re: Сборка драйвера QPSQL
Отправлено: Viktor от Май 19, 2016, 12:32
Вот ещё какие ошибки и предупреждения выскакивают:

(http://i9.pixs.ru/storage/2/7/8/dasdpng_6795074_21999278.png) (http://pixs.ru/showimage/dasdpng_6795074_21999278.png)
(http://i9.pixs.ru/storage/3/0/2/asfASDpng_5253732_21999302.png) (http://pixs.ru/showimage/asfASDpng_5253732_21999302.png)


Название: Re: Сборка драйвера QPSQL
Отправлено: Aleksey_A от Май 19, 2016, 13:48
Собирал QPSQL последний раз под Qt 5.4.2 с версией PostgreSQL 9.1. Версии Postgre выше 9.1 отказались собираться (на MinGW, на MSVC не пробовал).
Возможно стоит попробовать взять версию не 9.3, а 9.1. Делал так:

Брал postgresql-9.1.хх-windows-binaries.zip (x86-32) отсюда: http://www.enterprisedb.com/products-services-training/pgbindownload
Командную строку открывать из Пуск->Qt 5.4.2 (просто чтобы запустить командную строку сразу с нужными переменными окружения)

1. Делаем путь до каталогов include и lib от PostgreSQL без пробелов (разархивируем postgresql-9.1.хх-windows-binaries.zip в С:\pgsql)
2. cd C:\Qt\Qt5.4.2\5.4.2\Src\qtbase\src\plugins\sqldrivers\psql
3. qmake "INCLUDEPATH+=C:\pgsql\include" "LIBS+=C:\pgsql\lib\libpq.lib" psql.pro
4. mingw32-make
5. Скопировать qsqlpsql.dll из C:\Qt\Qt5.4.2\5.4.2\Src\qtbase\plugins\sqldrivers в подпапку /sqldrivers каталога *.exe
6. копируем из C:/pgsql/bin файлы libpq.dll,libxml2.dll,ssleay32.dll,zlib1.dll,libeay32.dll,libiconv-2.dll,libxslt.dll,libintl-8.dll в папку с *.exe


Название: Re: Сборка драйвера QPSQL
Отправлено: Viktor от Май 19, 2016, 14:55
Собирал QPSQL последний раз под Qt 5.4.2 с версией PostgreSQL 9.1. Версии Postgre выше 9.1 отказались собираться (на MinGW, на MSVC не пробовал).
Возможно стоит попробовать взять версию не 9.3, а 9.1. Делал так:

Брал postgresql-9.1.хх-windows-binaries.zip (x86-32) отсюда: http://www.enterprisedb.com/products-services-training/pgbindownload
Командную строку открывать из Пуск->Qt 5.4.2 (просто чтобы запустить командную строку сразу с нужными переменными окружения)

1. Делаем путь до каталогов include и lib от PostgreSQL без пробелов (разархивируем postgresql-9.1.хх-windows-binaries.zip в С:\pgsql)
2. cd C:\Qt\Qt5.4.2\5.4.2\Src\qtbase\src\plugins\sqldrivers\psql
3. qmake "INCLUDEPATH+=C:\pgsql\include" "LIBS+=C:\pgsql\lib\libpq.lib" psql.pro
4. mingw32-make
5. Скопировать qsqlpsql.dll из C:\Qt\Qt5.4.2\5.4.2\Src\qtbase\plugins\sqldrivers в подпапку /sqldrivers каталога *.exe
6. копируем из C:/pgsql/bin файлы libpq.dll,libxml2.dll,ssleay32.dll,zlib1.dll,libeay32.dll,libiconv-2.dll,libxslt.dll,libintl-8.dll в папку с *.exe


Попробовал сделать как ты сказал. Скачал версию Postgresql 9.1 но всё таже самая конетель. При компиляции драйверов выдаёт всё те же ошибки... .


Название: Re: Сборка драйвера QPSQL
Отправлено: Aleksey_A от Май 19, 2016, 15:25
А у Вас точно совпадает разрядность? PostgreSQL в вашем случае (для MinGW 32bit) должна быть именно x86-32.
Вот в этой теме очень похожие ошибки: http://www.prog.org.ru/topic_17100_0.html (http://www.prog.org.ru/topic_17100_0.html)

И как вариант еще почистить каталог сборки от старого хлама:
1. cd C:\Qt\Qt5.x.x\5.x\Src\qtbase\src\plugins\sqldrivers\psql
2. mingw32-make clean
или руками поудалять .moc, .obj, Makefile и т.д. в C:\Qt\Qt5.x.x\5.x\Src\qtbase\src\plugins\sqldrivers\psql

З.Ы. Проверил на Qt 5.6.0-MinGW-32bit, драйвер для PostgreSQL 9.1 создается, для 9.3 - нет. Делал так же,как и писал в пред. сообщении (ну вместо путей Qt5.4.2 -> Qt5.6.0)


Название: Re: Сборка драйвера QPSQL
Отправлено: Viktor от Май 19, 2016, 16:59
А у Вас точно совпадает разрядность? PostgreSQL в вашем случае (для MinGW 32bit) должна быть именно x86-32.
Вот в этой теме очень похожие ошибки: http://www.prog.org.ru/topic_17100_0.html (http://www.prog.org.ru/topic_17100_0.html)

И как вариант еще почистить каталог сборки от старого хлама:
1. cd C:\Qt\Qt5.x.x\5.x\Src\qtbase\src\plugins\sqldrivers\psql
2. mingw32-make clean
или руками поудалять .moc, .obj, Makefile и т.д. в C:\Qt\Qt5.x.x\5.x\Src\qtbase\src\plugins\sqldrivers\psql

З.Ы. Проверил на Qt 5.6.0-MinGW-32bit, драйвер для PostgreSQL 9.1 создается, для 9.3 - нет. Делал так же,как и писал в пред. сообщении (ну вместо путей Qt5.4.2 -> Qt5.6.0)


Получилось! Вы меня спасли))) да, у меня была x86-64. Я поставил 32 и всё получилось)


Название: Re: Сборка драйвера QPSQL
Отправлено: qate от Май 19, 2016, 21:31
а зачем самому собирать драйвер, ведь он собирается при сборке qt ?
я думал необходимо в нём чтото поменять )