Название: QPSQL в windows Отправлено: iRQSX от Сентябрь 21, 2010, 20:37 Доброго времени суток! Заранее извиняюсь за то что снова поднимаю заезженную тему. Не могу найти нормального решения проблемы...
Итого имеется QT 4.7 Qtcreator 2.0.1 установленные из exeшника под win7. при попытке соединения с постгрис базой идет стандартная ошибка "QPSQL driver not loaded" ибо QPSQL нет в плагинах. Я не пойму надо пересобирать всю qt c qtcreator'ом или просто собрать драйвер? Или просто взять готовую библиотеку? Объясните что и как делать пожалуйста! Пытался собрать по этому примеру - http://doc.qt.nokia.com/4.6/sql-driver.html#general-information-about-the-qpsql-driver (http://doc.qt.nokia.com/4.6/sql-driver.html#general-information-about-the-qpsql-driver) на стадии make валят ошибки. Делал так qmake "INCLUDEPATH+=c:\Program Files\PostgreSQL\9.0\include" "LIBS+=c:\Program Files\PostgreSQL\9.0\lib\libpq.lib"psql.pro make Ошибки типа ... ..\..\..\sql\drivers\psql\qsql_psql.cpp:58:22: error: libpq-fe.h: No such file o r directory ..\..\..\sql\drivers\psql\qsql_psql.cpp:59:23: error: pg_config.h: No such file or directory ... Ну и соответственно ругается на финкции в этих хидерах хотя они лежат в папке с постгрес... Название: Re: QPSQL в windows Отправлено: iRQSX от Сентябрь 23, 2010, 10:14 Ок. Не знаю в чем был баг но прописав INCLUDEPATH+= и LIBS+= прямо в .pro скомпилил прямо в qtcreatore. В qt\plugins\sqldrivers\ появились 4 файла:
libqsqlpsql4.a libqsqlpsqld4.a qsqlpsql4.dll qsqlpsqld4.dll Вроде все верно, но все равно вижу при запуске своей проги QSqlDatabase: QPSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC Не бросайте в беде! Название: Re: QPSQL в windows Отправлено: BaltikS от Сентябрь 23, 2010, 11:22 Сделай так, чтобы libpq.dll со всеми зависимостями была увидена твоей программой
Название: Re: QPSQL в windows Отправлено: iRQSX от Сентябрь 23, 2010, 13:11 Добавил в PATH
c:\psql\lib\; c:\psql\bin\ Ошибка стала еще интересней ;D Код: QSqlDatabase: QPSQL driver not loaded Название: Re: QPSQL в windows Отправлено: asvil от Сентябрь 23, 2010, 15:18 Сделайте так:
Код: QLibrary("sqldrivers/qsqlpsql"); Я смог запустить драйвер только после того как скопировал postgres библиотеки в папку с программой. Название: Re: QPSQL в windows Отправлено: iRQSX от Сентябрь 27, 2010, 10:36 после перезагрузки компа драйвер заработал :)
А вот по поводу QLibrary("sqldrivers/qsqlpsql"); Так и не смог подгрузить "не находит модуль"... Название: Re: QPSQL в windows Отправлено: sindbad07 от Сентябрь 28, 2010, 16:01 А у Вас qt с новым постгресом нормально работает?
У меня просто пишет: This version of PostgreSQL is not supported and may not work. И ни одна модель не работает... Название: Re: QPSQL в windows Отправлено: iRQSX от Сентябрь 29, 2010, 00:58 Ругается так же, но db.open() дает true, т.е. вроде подключается. но работать с базой пока не пробовал!
Код Выдает yes, таблица появляется. postgresql-9.0.0-1-windows. А вот до моделей пока недорос ибо "чайник". попройте этот код и сообщате. А то самому интересно! ответ на ваш вопрос http://www.prog.org.ru/index.php?topic=15041.msg99392#msg99392 Название: Re: QPSQL в windows Отправлено: kolob от Апрель 10, 2011, 11:11 Добрый день! Люди добрые помогите собрать драйвер postgres9. Пытаюсь собрать студией 6. Пробовал как описано выше, но что то не получается.
В файле qsql_psql.h в инклюдах включается файл libpq-fe.h но такого файла в постгресе нет. есть только libpq-fs.h. Название: Re: QPSQL в windows Отправлено: kolob от Апрель 10, 2011, 11:16 Изменил в инклюдах на файл libpq-fs.h
выдает ошибки: Цитировать C:\Qt\3.3.3\src\sql\drivers\psql>qmake psql.pro C:\Qt\3.3.3\src\sql\drivers\psql>nmake Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cl -c -nologo -Zm200 -W3 -MD -O1 -DUNICODE -DQT_DLL -DQT_THREAD_SUPPORT -DQT_ACCESSIBILITY_SUPPORT -DQT_NO_DEBUG -I"." -I"C:\Program" -I"Files\PostgreS QL\9.0\include" -I"C:\Qt\3.3.3\include" -I"C:\Qt\3.3.3\src\sql\drivers\psql" -I" tmp\moc\release_mt_shared" -I"C:\Qt\3.3.3\mkspecs\win32-msvc" -Fotmp\obj\release _mt_shared\ @C:\Users\0C18~1\AppData\Local\Temp\nma04148. qsql_psql.cpp .\qsql_psql.h(61) : error C2143: syntax error : missing ';' before '*' .\qsql_psql.h(61) : error C2501: 'PGresult' : missing storage-class or type spec ifiers .\qsql_psql.h(61) : error C2501: 'result' : missing storage-class or type specif iers .\qsql_psql.h(88) : error C2629: unexpected 'class QPSQLDriver (' .\qsql_psql.h(88) : error C2238: unexpected token(s) preceding ';' .\qsql_psql.h(106) : error C2143: syntax error : missing ';' before '*' .\qsql_psql.h(106) : error C2501: 'PGconn' : missing storage-class or type speci fiers .\qsql_psql.h(106) : error C2501: 'connection' : missing storage-class or type s pecifiers .\qsql_psql.cpp(50) : fatal error C1083: Cannot open include file: 'postgres.h': No such file or directory NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop. C:\Qt\3.3.3\src\sql\drivers\psql> Название: Re: QPSQL в windows Отправлено: Hellraiser от Апрель 10, 2011, 13:03 Вот это в логе не смущает?
Цитировать -I"C:\Program" -I"Files\PostgreSQL\9.0\include" Где же все-таки компилятор будет искать инклуды постгреса?Название: Re: QPSQL в windows Отправлено: kolob от Апрель 10, 2011, 20:49 не это я все прописал в переменных средах в include и lib и в path тоже прописал.
Сейчас выдает вот что: Цитировать C:\Qt\3.3.3\src\sql\drivers\psql>nmake может все таки версия старая (Qt3.3.3)Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cl -c -nologo -Zm200 -W3 -MD -O1 -DUNICODE -DQT_DLL -DQT_THREAD_SUPPORT -DQT_ACCESSIBILITY_SUPPORT -DQT_NO_DEBUG -I"." -I"C:\Program" -I"Files\PostgreS QL\9.0\include" -I"C:\Program" -I"Files\PostgreSQL\9.0\include\server" -I"C:\Pro gram" -I"Files\PostgreSQL\9.0\include\server\port\win32" -I"C:\Qt\3.3.3\include" -I"C:\Qt\3.3.3\src\sql\drivers\psql" -I"tmp\moc\release_mt_shared" -I"C:\Qt\3.3 .3\mkspecs\win32-msvc" -Fotmp\obj\release_mt_shared\ @C:\Users\0C18~1\AppData\Lo cal\Temp\nma05552. qsql_psql.cpp C:\Program Files\PostgreSQL\9.0\include\server\pg_config_os.h(187) : error C2011 : 'timezone' : 'struct' type redefinition C:\Program Files\PostgreSQL\9.0\include\server\pg_config_os.h(196) : error C2011 : 'itimerval' : 'struct' type redefinition C:\Program Files\PostgreSQL\9.0\include\server\c.h(284) : fatal error C1189: #er ror : must have a working 64-bit integer datatype NMAKE : fatal error U1077: 'cl' : return code '0x2' Stop. Название: Re: QPSQL в windows Отправлено: Hellraiser от Апрель 11, 2011, 09:28 Я же не просто так выделил только часть лога: четко видно что путь с пробелом разрывается и получается непонятно что в результате. Не надо использовать пути с пробелами, либо экранировать их, либо использовать короткое имя такого пути. К примеру C:\Program Files\ запишется как C:\Progra~1\
P.S. Qt 3.3 под Windows прекрасно собирается компиляторами MSVC 2003 и 2005. Я бы скорее грешил на старый компилятор, т.к. ругается не на Кьютовые хедеры, а на SDK-шные Название: Re: QPSQL в windows Отправлено: kolob от Апрель 11, 2011, 10:49 Цитировать Qt 3.3 под Windows прекрасно собирается компиляторами MSVC 2003 и 2005. Я бы скорее грешил на старый компилятор, т.к. ругается не на Кьютовые хедеры, а на SDK-шные А причем тут сборка Qt. В логе же видно что ошибки в файлах postgres.Может быть исходники версии Qt3 устарели для PostgreSql 9 ? Название: Re: QPSQL в windows Отправлено: Hellraiser от Апрель 11, 2011, 16:58 В файле qsql_psql.h в инклюдах включается файл libpq-fe.h но такого файла в постгресе нет. есть только libpq-fs.h. Интересно, откуда тогда он взялся у меня? Брал отсюда (http://www.enterprisedb.com/products-services-training/pgbindownload). Внутри архива в папке include лежит требуемый файлик. Кьют делает всего-лишь обертку над функциями постгреса. Проблемы должны начаться уже после сборки, т.к. в кьюте захардкодены версии постгреса.Название: Re: QPSQL в windows Отправлено: kolob от Апрель 11, 2011, 21:14 Цитировать В файле qsql_psql.h в инклюдах включается файл libpq-fe.h но такого файла в постгресе нет. есть только libpq-fs.h. Я его потом нашел все нормально.Цитировать Проблемы должны начаться уже после сборки, т.к. в кьюте захардкодены версии постгреса. Занчит ты уже собрал драйвер для PostgreSql 9.0 ?Может скинешь тогда? Название: Re: QPSQL в windows Отправлено: Hellraiser от Апрель 11, 2011, 21:26 С тройкой уже завязал, да и компилятор у меня существенно старше (2008)
Название: Re: QPSQL в windows Отправлено: kolob от Апрель 11, 2011, 21:36 Может от этого и зависит. От исходников 3-хи. В последних сообщениях , которые я выше выложил ошибки на это похожи.
Название: Re: QPSQL в windows Отправлено: Greezley от Май 07, 2011, 18:35 Всем привет. Чтобы не создавать новую тему пишу здесь, надеюсь кто-нибудь ответит.
Скачал Qt SDK 1.1, нужно подключить драйвер QPSQL. Соответственно dll-к нету. Не понимаю как их создавать? может ли кто объяснить? куда эти команды вписывать? Название: Re: QPSQL в windows Отправлено: Greezley от Май 07, 2011, 22:08 Вообще как я понял в папке plugins\sqldrivers должен быть проект psql.pro ??
у меня его нет. Можно ли его самому создать? Или можно скачать где-то собранные драйвера? Название: Re: QPSQL в windows Отправлено: kolob от Май 12, 2011, 15:50 Вот тут (http://qtcentre.org/wiki/index.php?title=Building_the_QPSQL_plugin_on_Windows_using_MinGW) все написано. И еще по форуму поищи. Тем море.
Название: Re: QPSQL в windows Отправлено: Greezley от Май 12, 2011, 16:01 Та уже поискал, всё перепробовал. Но в новом SDK структура файлов новая. Сначала нужно выкачать исходники, чтобы был проект с psql. Скачал, попробовал собрать как написано в инструкции. Не получилось. Ошибки debug-а выскакивали постоянно при сборке. Возможно из-за того что все папки расположены в новых местах, относительно предыдущих сборок и пути не совпадают, хотя почти всё что можно добавил в PATH (qmake, Posgresql\include, lib).
А есть ли возможность скачать откуда-то собранные плагины? в линуксе вроде можно... Название: Re: QPSQL в windows Отправлено: kolob от Май 13, 2011, 11:27 Покажи лог сборки
А вообще вот что нашел для новой SDK Qt 4.7 http://doc.qt.nokia.com/latest/sql-driver.html (http://doc.qt.nokia.com/latest/sql-driver.html) Название: Re: QPSQL в windows Отправлено: Greezley от Май 13, 2011, 18:37 Попробовал еще раз собрать получил такую ошибку:
WARNING: (internal):1: Unescaped backslashes are deprecated. Вообще делаю всё по описанию, вроде. Вот полный лог до ошибки: cd c:\QtSDK\QtSources\4.7.3\src\plugins\sqldrivers\psql\ qmake "INCLUDEPATH+=\"C:\Program Files\PostgreSQL\9.0\include\"" "LIBS+=\"C:\Program Files\PostgreSQL\9.0\lib\libpq.lib\"" psql.pro WARNING: (internal):1: Unescaped backslashes are deprecated. WARNING: (internal):1: Unescaped backslashes are deprecated. WARNING: (internal):1: Unescaped backslashes are deprecated. Название: Re: QPSQL в windows Отправлено: like-nix от Май 23, 2011, 12:30 Кому нибудь удалось собрать модуль psql в Qt 4.7 и postgres 9.1 компилятором nmake?
Я делаю так: Код: qmake "INCLUDEPATH+=G:\postgress\include" "LIBS+=G:\postgress\lib\libpq.lib" psql.pro В ответ: Код: WARNING: (internal):1: Unescaped backslashes are deprecated. Я не знаю на что это влияет =) потом nmake не может найти символы: Код: qsql_psql.obj : error LNK2019: unresolved external symbol _PQntuples referenced in function "public: bool __thiscall QPSQLResultPrivate::processResults(void)" (?processResults@QPSQLResultPrivate@@QAE_NXZ) Название: Re: QPSQL в windows Отправлено: Пантер от Май 23, 2011, 12:36 А погуглить не вариант?
Код: qmake "INCLUDEPATH+=G:\\postgress\\include" "LIBS+=G:\\postgress\\lib\\libpq.lib" psql.pro Название: Re: QPSQL в windows Отправлено: like-nix от Май 23, 2011, 12:40 Спасибо Пантер. Я просто забыл погуглить.
Но nmake всеравно символы не находит Название: Re: QPSQL в windows Отправлено: Pretorean от Июнь 20, 2011, 11:52 Вопрос в тему
собирал по мануалу с последней QtSDK 1.1.1 http://www.qtcentre.org/wiki/index.php?title=Building_the_QPSQL_plugin_on_Windows_using_MinGW получилось собрать, но не подключается видно по той причине, что libpg.dll собранна студией а не MinGW. Что делать ? гуглением не удалось найти дистрибутив под win собранный MinGW пересобирать PostgreSQL из исходников ? Название: Re: QPSQL в windows Отправлено: Пантер от Июнь 20, 2011, 11:56 Там еще много dll в зависимостях. Собирай из исходников - это не сложно. Плюс зависимостей будет намного меньше. Нужно будет только через Cygwin собирать.
Название: Re: QPSQL в windows Отправлено: Pretorean от Июнь 20, 2011, 13:29 Там еще много dll в зависимостях. Собирай из исходников - это не сложно. Плюс зависимостей будет намного меньше. Нужно будет только через Cygwin собирать. http://www.postgresql.org/ftp/binary/v8.2.21/Это самое свежее что собрано mingw, взял оттуда libpq.dll с необходимыми зависимостями и всё заработало. Установлен 8.4 ... полет нормальный. |