Russian Qt Forum
Май 18, 2012, 20:06
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
(Модератор:
Sergeich
) >
qt3 и postgres 8.1
Страниц: [
1
]
2
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: qt3 и postgres 8.1 (Прочитано 8952 раз)
i9
Гость
qt3 и postgres 8.1
«
:
Март 27, 2006, 15:01 »
Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип.
PS Сама идея взять дрова из qt4 наверное абсурдная.
Записан
SLiDER
Программист
Offline
Сообщений: 529
Re: qt3 и postgres 8.1
«
Ответ #1 :
Март 27, 2006, 22:39 »
Цитата: "i9"
Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип.
PS Сама идея взять дрова из qt4 наверное абсурдная.
Чем компилим?
З.Ы. Дрова от четверки не пойдут.
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
Re: qt3 и postgres 8.1
«
Ответ #2 :
Март 28, 2006, 01:10 »
Цитата: "SLiDER"
Чем компилим?
VisualC 6-я
PS под линой-то данная связка живет, должна и под виндой жить...
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #3 :
Март 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
описано как ее получить, завтра стяну архив с исходниками и попробую.
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
qt3 и postgres 8.1
«
Ответ #4 :
Март 29, 2006, 09:20 »
Цитата: "SLiDER"
Гмммм. Ну pid_t это не что иное как
int
, и определен он в
pg_config_os.h
.
Это я находил...
Цитата: "SLiDER"
Можете по подробнее логи ошибок выложить?
А вообще разработчики PostgreSQL под виндой собирают его компилятором MinGW, и лишь не давно стали прикладывать к нему *.lib фалы для VS (стабы для dll) и как подозреваю под VS7
Вообще я до линковки еще не дошел, структура путей инклудников 8.1 отличается от той, что тролтеч в примерах выложила для 7-й. Подбирая пути уперся в отсутствие strings.h, которого нет нив qt ни в postgres нив стандартных Си...
Цитата: "SLiDER"
У меня в комплекте идет только libecpg.lib и libpq.lib по 15 и 25 КБ соответственно. А для сборки плагина там вроде нужно что-то еще.
У меня так же.
PS Овечаю второй раз, т.к. первый раз отвечал вчера из под винды и ответ загадочным образом "исчез".
Записан
i9
Гость
qt3 и postgres 8.1
«
Ответ #5 :
Март 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
==============================
Никто не подскажет чего оно хочет, почему не хавается?
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #6 :
Апрель 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)
_CRT_DEPRECATE_TEXT("This name was supported during some Whidbey pre-releases. Instead, use the standard name errno_t." ) typedef int errcode;
#else
typedef int errcode;
#endif
Лучше их напрочь закомментировать, так как объявление данного типа создает конфликт имен с аналогичным из комплекта PostgreSQL. Опосля можно будет все вернуть в исходное.
Далее следует внести не большое исправление в заголовочный файл c.h (из дистрибутива postgre). Включение заголовочного файла strings.h следует исправить на следующее:
Код:
#if defined(HAVE_STRINGS_H) && !defined(_MSC_VER)
#include <strings.h>
#endif
Или вообще прибить (не велика потеря ;-) ).
После компиляции копируем нужные нам файлы куда следует или прописываем соответствующие пути и запускаем компиляцию Qt или отдельного плагина, это уж как вам самим нужно. Все должно пройти без проблем. Во всяком случае у меня получилось.
добавлено спустя 5 минут:
Цитата: "i9"
Никто не подскажет чего оно хочет, почему не хавается?
А Platform SDK точно для VS6? Ведь шестерка и более поздние версии VS по бинарному коду между собой не совместимы, и она не сможет слинковать либу скомпилированную, например, в VS2003. :idea:
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
qt3 и postgres 8.1
«
Ответ #7 :
Апрель 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
LINK : warning LNK4199: /DELAYLOAD:oleaut32.dll ignored; no imports found from oleaut32.dll
LINK : warning LNK4199: /DELAYLOAD:winmm.dll ignored; no imports found from winmm.dll
LINK : warning LNK4199: /DELAYLOAD:wsock32.dll ignored; no imports found from wsock32.dll
LINK : warning LNK4199: /DELAYLOAD:winspool.dll ignored; no imports found from winspool.dll
LINK : warning LNK4199: /DELAYLOAD:opengl32.dll ignored; no imports found from opengl32.dll
Причем переустановил все, вплоть до винды - варнинги имеют место, может просто раньше не замечал.... Странно как-то...
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #8 :
Апрель 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
LINK : warning LNK4199: /DELAYLOAD:oleaut32.dll ignored; no imports found from oleaut32.dll
LINK : warning LNK4199: /DELAYLOAD:winmm.dll ignored; no imports found from winmm.dll
LINK : warning LNK4199: /DELAYLOAD:wsock32.dll ignored; no imports found from wsock32.dll
LINK : warning LNK4199: /DELAYLOAD:winspool.dll ignored; no imports found from winspool.dll
LINK : warning LNK4199: /DELAYLOAD:opengl32.dll ignored; no imports found from opengl32.dll
Причем переустановил все, вплоть до винды - варнинги имеют место, может просто раньше не замечал.... Странно как-то...
С warning все просто, линкер не может найти отладочные символы для загружаемых динамических библиотек, хотя они должны быть в Platform SDK, но вы наверное их не прописали в пути линкеру. Да это все ерунда вы же не собираетесь Винду отлаживать, так что можете просто отключить их вывод, чтоб не нервировали.
добавлено спустя 6 минут:
Чёй-то у hotbox.ru опять smtp глючить, и ведь не в первый раз уже. Пойду через web-интерфейс отправлю.
добавлено спустя 8 минут:
Уффф. Ну вроде ушло. Забирай.
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
qt3 и postgres 8.1
«
Ответ #9 :
Апрель 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, но вы наверное их не прописали в пути линкеру. Да это все ерунда вы же не собираетесь Винду отлаживать, так что можете просто отключить их вывод, чтоб не нервировали.
Успокоили, а то действительно смущали варнинги...
Цитата: "SLiDER"
Чёй-то у hotbox.ru опять smtp глючить, и ведь не в первый раз уже. Пойду через web-интерфейс отправлю.
Уффф. Ну вроде ушло. Забирай.
Да, последнее время он че-то плошает...
На счет инменений в h-файлах: crtdefs.h в VS6 не нашел.
Коментирование #include <strings.h> в c.h изменений не дало.
Сейчас пытаюсь скомпилять Qt с помощью MinGW 3.4.2 - это на часы...
Если ничего так и не получится, то во второй половине след. недели буду пробывать на VS2005, пока ее нету....
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #10 :
Апрель 02, 2006, 14:25 »
Цитата: "i9"
А разве Qt скомпиленая под VS6 не сможет использовать dll-ку скомпиленую VS2005? Этож на подобии если я буду компилить свою прогу VS6, которая будет юзать системные dll-ки, скомпиленые явно не с VS6. Или я ошибаюсь?
Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
З.Ы. Еще могут возникнуть проблемы совместимости из-за немного разных версий Qt, хотя вероятность этого не слишком велика.
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
qt3 и postgres 8.1
«
Ответ #11 :
Апрель 02, 2006, 14:40 »
Цитата: "SLiDER"
Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #12 :
Апрель 02, 2006, 14:57 »
Цитата: "i9"
Цитата: "SLiDER"
Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...
А программу без lib-файла как компилировать будете, откуда линкеру символы таскать для линковки? В Qt, вроде бы, загрузка плагинов посредством вызова LoadLibrary не предусмотрена (судя по исходникам), а как еще по другому dll загружать?
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
i9
Гость
qt3 и postgres 8.1
«
Ответ #13 :
Апрель 02, 2006, 15:36 »
Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет...
Записан
SLiDER
Программист
Offline
Сообщений: 529
qt3 и postgres 8.1
«
Ответ #14 :
Апрель 02, 2006, 15:43 »
Цитата: "i9"
Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет...
Ушло.
Записан
Пусть это будет просто: просто, как только можно, но не проще. (Альберт Эйнштейн)
Страниц: [
1
]
2
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...