Название: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: radislav72 от Март 14, 2013, 15:26 Здравствуйте!
Возникла необходимость перенести старый работающий проэкт с Qt 4.7 и Postgres 8.4 на новую платформу (см. тему). На новой машине Win8x64, но Qt 5.0 32-битный, и Postgres 9 также 32-битный. Пробую "по стандарту" собрать драйвер для Постгреса. Делаю, как всегда: в папке c:\Qt\Qt5.0.1\5.0.1\Src\qtbase\src\plugins\sqldrivers\psql\ Код: qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\libpq.lib" psql.pro Дальше Код: mingw32-make.exe Цитировать C:\psql\include/pthread.h:307:8: error: redefinition of 'struct timespec' ... c:\qt\qt5.0.1\tools\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/include/sys/timeb.h:90:8: error: previous definition of 'struct timespec' Makefile.Release:391: recipe for target '.obj/release_shared/main.o' failed mingw32-make.exe[1]: *** [.obj/release_shared/main.o] Error 1 mingw32-make.exe[1]: Leaving directory 'c:/Qt/Qt5.0.1/5.0.1/Src/qtbase/src/plugins/sqldrivers/psql' makefile:38: recipe for target 'release-all' failed mingw32-make.exe: *** [release-all] Error 2 Смотрю указанные файлы- структура timespec действительно обьявлена два раза- в файле pthread.h (из папки include Постгреса) и в файле из поставки Qt. Так как mingw32-make пишет, что redefinition в файле pthread.h, модифицирую его (додавши #ifndef _TIMESPEC_DEFINED): Код: #ifndef _TIMESPEC_DEFINED Теперь mingw32-make.exe отрабатывает нормально- без ошибок-, и в папке c:\Qt\Qt5.0.1\5.0.1\Src\qtbase\plugins\sqldrivers\ появляются файлы: Цитировать libqsqlpsql.a Для старой версии Qt и Постгреса название библиотеки отличалось - qsqlpsqld4.dll . Теперь "4" отсутствует...libqsqlpsqld.a qsqlpsql.dll qsqlpsqld.dll Но главаня проблема в том, что программа к Постгресу не коннектится: Цитировать QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE Пример из поставки Qt sqlbrowser также не видит драйвера. В переменную окружения PATH вроде прописано все что надо: Цитировать c:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\;c:\Qt\Qt5.0.1\Tools\MinGW\bin\;c:\psql\bin\;c:\psql\lib\;C:\psql\include Может, кто-то сталкивался с подобным, или есть идеи как побороть? А то уже замучился с пробами. Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: radislav72 от Март 14, 2013, 18:38 Попробовал, снес Постгрес 9, поставил 8.4. Драйвер (dll) сложился вообще без ошибок, правда тоже без 4 в названии (хотя старый драйвер для Постгрес 8.4 назывался qsqlpsqld4.dll). Но так же Qt не видит драйвера...
Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: radislav72 от Март 15, 2013, 11:35 Возвращений на Qt 4.8 все сразу решило. Тот работает с любым Постгресом, и старым, и новым.
Видно, дело в Qt 5... Кто делал драйвер для пятерки (и получилось), напишите хоть как он должен называться. В результате билда получается qsqlpsqld.dll А в четвертой Qt - qsqlpsqld4.dll Так должно быть? Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: Crockus от Март 15, 2013, 16:53 Попробовал, снес Постгрес 9, поставил 8.4. Драйвер (dll) сложился вообще без ошибок, правда тоже без 4 в названии (хотя старый драйвер для Постгрес 8.4 назывался qsqlpsqld4.dll). Но так же Qt не видит драйвера... длл-ки где лежат?Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: 0x6368656174 от Март 16, 2013, 08:58 Получилось заставить работать на Win7x32, может и вам поможет:
http://blog.itquasar.ru/2013/03/qt-5-postgresql-92-msvs-2010-on-windows.html Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: radislav72 от Март 25, 2013, 15:35 Спасибо, но мне нужно без MS VStudio, чтобы сохранить кроссплатформенность. То есть на Линуксе также нужно скомпилировать драйвер, поэтому решение должно быть не привязано к Studio
Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: 0x6368656174 от Март 28, 2013, 04:17 О_о На линуксе драйвера из коробки идут уже готовые))) У меня gentoo linux второй системой, там нечего специально компилировать не надо. А на винде лучше использовать MSVS для разработки, т.к. если Вы начнете работать с какими-нибудь сторонними библиотеками, отличными от Qt, то они процентов на 80 будут скомпилированы в MSVS, либо будет руководство как их там скомпилировать. А чтоб скомпилировать их под MinGW Вы потратите очень-очень много времени и испытаете огромное количество анальных болей (проверенно на собственном опыте). К тому же для работы в Qt, не нужна платная MSVS, хватит бесплатной Express версии.
Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: radislav72 от Март 30, 2013, 19:22 Честно говоря, никогдя для проекта Qt не использовал Studio, хотя другие проеты как раз в ней и разрабатываю, и лицензионная на компе она установлена :) А как с формами, разработанными в Qt Creator? Их Студия понимает? И как в Студии проэктировать окна, чтоб потом проэкт на Линуксе скомпилился?
Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: Bepec от Март 30, 2013, 20:22 Формы и в Creator и в VS отображаются с помощью дизайнера :)
Так что всё нормально будет. Единственно - следует избегать платформозависимого кода :) Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: 0x6368656174 от Апрель 05, 2013, 09:40 Только что понадобилась поддержка PostrgeSQL и под MinGW. Компилируется практически так же. Инструкция: http://blog.itquasar.ru/2013/04/qt-5-postgresql-92-mingw-on-windows.html
Название: Re: Qt 5.0 + Postgres 9.2 на Win8x64 Отправлено: 0x6368656174 от Апрель 16, 2013, 09:16 Если кому-то понадобится, то вот как скомплировать QODBC (в основном юзается для подключения к MSSQL) драйвер используя MinGW http://blog.itquasar.ru/2013/04/qt-5-odbc-dirver-on-mingw.html
|