Название: qt3 и postgres 8.1 Отправлено: i9 от Март 27, 2006, 15:01 Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип.
PS Сама идея взять дрова из qt4 наверное абсурдная. Название: Re: qt3 и postgres 8.1 Отправлено: SLiDER от Март 27, 2006, 22:39 Цитата: "i9" Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип. PS Сама идея взять дрова из qt4 наверное абсурдная. Чем компилим? З.Ы. Дрова от четверки не пойдут. Название: Re: qt3 и postgres 8.1 Отправлено: i9 от Март 28, 2006, 01:10 Цитата: "SLiDER" Чем компилим? VisualC 6-я PS под линой-то данная связка живет, должна и под виндой жить... Название: qt3 и postgres 8.1 Отправлено: SLiDER от Март 28, 2006, 22:39 Цитата: "i9" Цитата: "SLiDER" Чем компилим? VisualC 6-я PS под линой-то данная связка живет, должна и под виндой жить... Гмммм. Ну pid_t это не что иное как int, и определен он в pg_config_os.h. Можете по подробнее логи ошибок выложить? А вообще разработчики PostgreSQL под виндой собирают его компилятором MinGW, и лишь не давно стали прикладывать к нему *.lib фалы для VS (стабы для dll) и как подозреваю под VS7. У меня в комплекте идет только libecpg.lib и libpq.lib по 15 и 25 КБ соответственно. А для сборки плагина там вроде нужно что-то еще. З.Ы. Сей час попробую собрать версию 3.3.5, но только под VS2005 ибо другой не имею. Завтра отпишусь. добавлено спустя: Как я и предполага не хватает libpqdll.lib. Но вот сдесь http://www.sbin.org/doc/pg/doc/install-win32.html описано как ее получить, завтра стяну архив с исходниками и попробую. Название: qt3 и postgres 8.1 Отправлено: i9 от Март 29, 2006, 09:20 Цитата: "SLiDER" Гмммм. Ну pid_t это не что иное как int, и определен он в pg_config_os.h. Это я находил...Цитата: "SLiDER" Можете по подробнее логи ошибок выложить? Вообще я до линковки еще не дошел, структура путей инклудников 8.1 отличается от той, что тролтеч в примерах выложила для 7-й. Подбирая пути уперся в отсутствие strings.h, которого нет нив qt ни в postgres нив стандартных Си...А вообще разработчики PostgreSQL под виндой собирают его компилятором MinGW, и лишь не давно стали прикладывать к нему *.lib фалы для VS (стабы для dll) и как подозреваю под VS7 Цитата: "SLiDER" У меня в комплекте идет только libecpg.lib и libpq.lib по 15 и 25 КБ соответственно. А для сборки плагина там вроде нужно что-то еще. У меня так же.PS Овечаю второй раз, т.к. первый раз отвечал вчера из под винды и ответ загадочным образом "исчез". Название: qt3 и postgres 8.1 Отправлено: i9 от Март 31, 2006, 02:53 Я глючил, думал, что инклудники из виндовой инсталяшки должны решать проблемы, нифига они этого не делают, непонятно стало зачем они там вообще в таком случае...
Скачал полные исходники постгриса - ура, хоть компиляция проходит на ура. Проблемы стали так же в отсутсутствии libpqdll.lib. Где-то откопал, что она должна создаваться: "nmake /f win32.mak" - теперь отсутсвует shfolder.lib (в системе присутствует shfolder.dll, в исходниках имеется/создался shfolder.obj) вобщем пока ищу где таковую откопать... добавлено спустя 5 часов 18 минут: Закачал SDK, т.к. там а нашлась shfolders.lib, но теперь ругается на неопознаный "символ" _SHGetFolderPath, хотя в либе он неоднократно встречается. ============================== Building the Win32 static library... link.exe @C:\DOCUME~1\i9\LOCALS~1\Temp\nma00816. Creating library .\Release\libpqdll.lib and object .\Release\libpqdll.exp libpq.lib(fe-connect.obj) : error LNK2001: unresolved external symbol _SHGetFolderPath .\Release\libpq.dll : fatal error LNK1120: 1 unresolved externals ============================== Никто не подскажет чего оно хочет, почему не хавается? Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 01, 2006, 21:41 Небольшое руководство по компиляции Qt версий 3.х.х с PostgreSQL plug-in с помощью MS Visual Studio 2005 (подозреваю что для других средств разработки от MS и даже для Borland С++ процесс вряд ли будет сильно отличаться).
Во-первых, нужно скачать дистрибутив самой PostgreSQL, на оффсайте (postgresql.org) есть куча зеркал на любой вкус, текущая актуальная версия 8.1.3. Если вам не нужна сама СУБД то лучше сразу скачивать пакет с исходниками, поскольку без него все равно не обойтись, так как с пакетом бинарников идет прекомпилированное SDK только для компилятора MinGW, и нужные нам библиотеки придется скомпилировать самим, благо makefile для этих дел с исходниками все-таки поставляется. Далее инсталлируем СУБД (если нам это нужно), и распаковываем пакет исходников в любую директорию. Теперь нам нужно получить от него следующие библиотеки: libpq.dll, libpq.lib, libpqdll.lib. Для этого заходим в директорию src и говорим волшебные слова: nmake /f win32.mak (для Borland C++: make -N -DCFG=Release /f bcc32.mak). После чего Получим все что нам нужно и даже немного больше (psql.exe и pg_config.exe), ну да ладно. Важное замечание!!! На время всех манипуляций с исходниками PostgreSQL, нужно обязательно избавится от следующих строк в файле crtdefs.h (из дистрибутива VS): Код: #if !defined(__midl) Лучше их напрочь закомментировать, так как объявление данного типа создает конфликт имен с аналогичным из комплекта PostgreSQL. Опосля можно будет все вернуть в исходное. Далее следует внести не большое исправление в заголовочный файл c.h (из дистрибутива postgre). Включение заголовочного файла strings.h следует исправить на следующее: Код: #if defined(HAVE_STRINGS_H) && !defined(_MSC_VER) Или вообще прибить (не велика потеря ;-) ). После компиляции копируем нужные нам файлы куда следует или прописываем соответствующие пути и запускаем компиляцию Qt или отдельного плагина, это уж как вам самим нужно. Все должно пройти без проблем. Во всяком случае у меня получилось. добавлено спустя 5 минут: Цитата: "i9" Никто не подскажет чего оно хочет, почему не хавается? А Platform SDK точно для VS6? Ведь шестерка и более поздние версии VS по бинарному коду между собой не совместимы, и она не сможет слинковать либу скомпилированную, например, в VS2003. :idea: Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 02, 2006, 03:19 Делаю: Устанавливаю visual studio 6, Qt3.3.4, Postgres 8.1(из бинарников).
Скачиваю сорцы постгриса 8.1.3. Ставлю SDK (Если не ошибаюсь маленькая инталяшка SDK перед тем как качать с микросовтовского сайта нашла VS6 в системе). Закачивал SDK под х86, атлон и 64bit (если пробывал юзать атлоновкие, то говорило, что не тот тип проца, ;-), хотя у меня атлон. 64-ку не пробывал, думаю тоже не покатило бы, а вот х86 либы линковались) Для получения libpq.dll, libpq.lib, libpqdll.lib использовал nmake /f win32.mak, которая ругалась на "unresolved external symbol _SHGetFolderPath", но при этом создавала libpq.lib и libpqdll.lib. длл-ку не создавала по указанной выше ошибке. Зато при наличии либов уже удается скомпилить дрова, которые не работают :-(. Сегодня как посплю попробую заново с изменениями в crtdefs.h и c.h файлах. Если не затруднит, не могли бы прислать полученые дрова и libpq.dll на i9$hotbox.ru. ЗЫ Не заметил с какого момента, но при линковке любого проекта (будь то драйвер, сам Qt или его example) дает варнинги: Код: LINK : warning LNK4199: /DELAYLOAD:comdlg32.dll ignored; no imports found from comdlg32.dll Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 02, 2006, 13:12 Цитата: "i9" Если не затруднит, не могли бы прислать полученые дрова и libpq.dll на i9$hotbox.ru. Дрова то я вам вышлю только вряд ли они вам помогут. Я собирал на VS2005 (Qt 3.3.5, PostgreSQL 8.1.3), а у нее как я уже писал бинарники с шестеркой не совместимы. VS6 нет так что попробовать не на чем. Цитата: "i9" ЗЫ Не заметил с какого момента, но при линковке любого проекта (будь то драйвер, сам Qt или его example) дает варнинги: Код: LINK : warning LNK4199: /DELAYLOAD:comdlg32.dll ignored; no imports found from comdlg32.dll С warning все просто, линкер не может найти отладочные символы для загружаемых динамических библиотек, хотя они должны быть в Platform SDK, но вы наверное их не прописали в пути линкеру. Да это все ерунда вы же не собираетесь Винду отлаживать, так что можете просто отключить их вывод, чтоб не нервировали. :D добавлено спустя 6 минут: Чёй-то у hotbox.ru опять smtp глючить, и ведь не в первый раз уже. Пойду через web-интерфейс отправлю. добавлено спустя 8 минут: Уффф. Ну вроде ушло. Забирай. Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 02, 2006, 14:11 Цитата: "SLiDER" Дрова то я вам вышлю только вряд ли они вам помогут. Я собирал на VS2005 (Qt 3.3.5, PostgreSQL 8.1.3), а у нее как я уже писал бинарники с шестеркой не совместимы. VS6 нет так что попробовать не на чем. А разве Qt скомпиленая под VS6 не сможет использовать dll-ку скомпиленую VS2005? Этож на подобии если я буду компилить свою прогу VS6, которая будет юзать системные dll-ки, скомпиленые явно не с VS6. Или я ошибаюсь?Цитата: "SLiDER" С warning все просто, линкер не может найти отладочные символы для загружаемых динамических библиотек, хотя они должны быть в Platform SDK, но вы наверное их не прописали в пути линкеру. Да это все ерунда вы же не собираетесь Винду отлаживать, так что можете просто отключить их вывод, чтоб не нервировали. :D Успокоили, а то действительно смущали варнинги...Цитата: "SLiDER" Чёй-то у hotbox.ru опять smtp глючить, и ведь не в первый раз уже. Пойду через web-интерфейс отправлю. Да, последнее время он че-то плошает...Уффф. Ну вроде ушло. Забирай. На счет инменений в h-файлах: crtdefs.h в VS6 не нашел. Коментирование #include <strings.h> в c.h изменений не дало. Сейчас пытаюсь скомпилять Qt с помощью MinGW 3.4.2 - это на часы... Если ничего так и не получится, то во второй половине след. недели буду пробывать на VS2005, пока ее нету.... Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 02, 2006, 14:25 Цитата: "i9" А разве Qt скомпиленая под VS6 не сможет использовать dll-ку скомпиленую VS2005? Этож на подобии если я буду компилить свою прогу VS6, которая будет юзать системные dll-ки, скомпиленые явно не с VS6. Или я ошибаюсь? Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты. З.Ы. Еще могут возникнуть проблемы совместимости из-за немного разных версий Qt, хотя вероятность этого не слишком велика. Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 02, 2006, 14:40 Цитата: "SLiDER" Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты. А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 02, 2006, 14:57 Цитата: "i9" Цитата: "SLiDER" Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты. А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...А программу без lib-файла как компилировать будете, откуда линкеру символы таскать для линковки? В Qt, вроде бы, загрузка плагинов посредством вызова LoadLibrary не предусмотрена (судя по исходникам), а как еще по другому dll загружать? Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 02, 2006, 15:36 Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет... :(
Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 02, 2006, 15:43 Цитата: "i9" Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет... :( Ушло. Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 02, 2006, 21:51 Цитата: "SLiDER" Ушло. Спасибо, получил, но увы таки не работает :(...Несколько часов компилил Qt MinGW-ом, таки докомпилилось, но с компилированием дров опять заморочки с путями/инклудами.... Наверное надо сделать паузу и пробывать копилять все на VS2005. Кстати, а он точно рабочий драйвер получается? Я не имею ввиду, чтоб Вы базу создавали и к ней конектились, хотяб qt его видит в качестве допустимых дров (имею ввиду QSqlDatabase::drivers() )? Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 02, 2006, 22:32 Цитата: "i9" Кстати, а он точно рабочий драйвер получается? Я не имею ввиду, чтоб Вы базу создавали и к ней конектились, хотяб qt его видит в качестве допустимых дров (имею ввиду QSqlDatabase::drivers() )? Вполне работоспособный. Проверил по полной программе. Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 10, 2006, 15:35 Таки что-то не то:
MSVC2005, qt-win-commercial-3.3.5 postgres-8.1 (+ исходники от 8.1.3) Коментарю в crtdefs.h Код: #if !defined(__midl) Код: #if defined(HAVE_STRINGS_H) Компилю libpq.dll, libpq.lib и libpqdll.lib (nmake /f win32.mak), при этом мелькает кучка варнингов "cl: Command line warning D9036: use'EHsc' instead of 'GX'", "cl: Command line warning D9002: ignoring unknown option '/YX'" и куча других о повторном переобъявлении всяких символов. Ну да ладно - все собирается. Собираю дровину: Код: set LIB=%LIB%;C:\psql\src\interfaces\libpq\Release Файлы дровины появляются, но из designer-а не получается сделать коннекта, моя совтина при попытке коннекта говорит "драйвер не загружен". Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 10, 2006, 21:21 Цитата: "i9" Файлы дровины появляются, но из designer-а не получается сделать коннекта, моя совтина при попытке коннекта говорит "драйвер не загружен". А вы случаем не забыли прописать в переменную PATH пути к bin папке PostgreSQL? Очень на то похоже. А то сам PostgreSQL этого не делает. :? Название: qt3 и postgres 8.1 Отправлено: i9 от Апрель 10, 2006, 23:51 Ура!!!!! Наконец-то.... (таки путь к постгрису, ни в жизнь не догадался бы...)
Огромное-приогромное спасибо! :-)))) Название: qt3 и postgres 8.1 Отправлено: SLiDER от Апрель 11, 2006, 00:01 Цитата: "i9" Ура!!!!! Наконец-то.... (таки путь к постгрису, ни в жизнь не догадался бы...) Огромное-приогромное спасибо! :-)))) Да не за что. Рад, что вам все удалось. :D Название: qt3 и postgres 8.1 Отправлено: arido от Ноябрь 22, 2006, 18:51 Цитата: "SLiDER" Для этого заходим в директорию src и говорим волшебные слова: nmake /f win32.mak (для Borland C++: make -N -DCFG=Release /f bcc32.mak). После чего Получим все что нам нужно и даже немного больше (psql.exe и pg_config.exe), ну да ладно.:idea: Скачала исходник postgresql-8.1.4, пытаюсь провести сборку. Использую компилятор BCC5.5. Возникли следующие ошибки: 1. Error E2206 fe-connect.c 2361: Illegal character '\' (0x5c) in function parseServiceInfo 2. Error E2380 fe-connect.c 2361: Unterminated string or character constant in function parseServiceInfo 3. Error E2121 fe-connect.c 2363: Function call missing ) in function parseServiceInfo Часть fe-connect.c: Код:
Подскажите, что сделать, как исправить? Название: qt3 и postgres 8.1 Отправлено: SLiDER от Ноябрь 23, 2006, 10:42 Цитата: "arido" Цитата: "SLiDER" Для этого заходим в директорию src и говорим волшебные слова: nmake /f win32.mak (для Borland C++: make -N -DCFG=Release /f bcc32.mak). После чего Получим все что нам нужно и даже немного больше (psql.exe и pg_config.exe), ну да ладно.:idea: Скачала исходник postgresql-8.1.4, пытаюсь провести сборку. Использую компилятор BCC5.5. Возникли следующие ошибки: 1. Error E2206 fe-connect.c 2361: Illegal character '\' (0x5c) in function parseServiceInfo 2. Error E2380 fe-connect.c 2361: Unterminated string or character constant in function parseServiceInfo 3. Error E2121 fe-connect.c 2363: Function call missing ) in function parseServiceInfo Часть fe-connect.c: Код:
Подскажите, что сделать, как исправить? Ох уж мне этот BCC ... первое что приходит в голову, для начала, попробуйте функцию из строк 2360 и 2361 объединить в одну строку. Хотя, похоже, что ему (BCC) какойто макрос не развернуть ни как. Пойду посмотрю исходники. Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Февраль 29, 2008, 11:19 Таки что-то не то: MSVC2005, qt-win-commercial-3.3.5 postgres-8.1 (+ исходники от 8.1.3) Коментарю в crtdefs.h Код: #if !defined(__midl) Код: #if defined(HAVE_STRINGS_H) Компилю libpq.dll, libpq.lib и libpqdll.lib (nmake /f win32.mak), при этом мелькает кучка варнингов "cl: Command line warning D9036: use'EHsc' instead of 'GX'", "cl: Command line warning D9002: ignoring unknown option '/YX'" и куча других о повторном переобъявлении всяких символов. Ну да ладно - все собирается. Собираю дровину: Код: set LIB=%LIB%;C:\psql\src\interfaces\libpq\Release Файлы дровины появляются, но из designer-а не получается сделать коннекта, моя совтина при попытке коннекта говорит "драйвер не загружен". А у меня всеравно вылазит неразрешенная ссылка на _SHGetFolderPath ??? Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Февраль 29, 2008, 23:15 Система XP Pro
Стоит VC6 SE SDK однако нигде нет shfolders.dll ни shfolders.lib Что делать? ??? Решил проблему с помощью ODBC, его драйвер создается на УРА!!! Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Сентябрь 26, 2008, 11:58 Наконец то удалось скомпилировать драйверы для PostgreSQL 8.1
Однако облом. Из DEMO запросы проходят, а из программы - записей QSqlQuery всегда 0. Запрос самый примитивный qRab->exec("SELECT razmp FROM menurazm"); Можете что либо подсказать? При подключении к этой же базе через ODBC все нормально... ??? Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Сентябрь 26, 2008, 12:20 Ежклмн...
Похоже при использовании драйвера PostgreSQL метод qRab->numRowsAffected() всегда возвращает 0... Или я где то накосячил? ??? ??? ??? А как еще можно узнать число полученных записей? Про Код: j=0; Название: Re: qt3 и postgres 8.1 Отправлено: Пантер от Сентябрь 26, 2008, 14:33 SELECT count() :)
Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Сентябрь 26, 2008, 14:47 А это как??? ???
Название: Re: qt3 и postgres 8.1 Отправлено: Пантер от Сентябрь 26, 2008, 14:49 Код: qRab->exec("SELECT count(razmp) FROM menurazm"); Название: Re: qt3 и postgres 8.1 Отправлено: Примерный ученик от Октябрь 01, 2008, 21:48 Спасибо, не знал такой простой конструкции :o
|