Russian Qt Forum
Ноябрь 23, 2024, 15:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: qt3 и postgres 8.1  (Прочитано 24043 раз)
i9
Гость
« : Март 27, 2006, 15:01 »

Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип.

PS Сама идея взять дрова из qt4 наверное абсурдная.
Записан
SLiDER
Гость
« Ответ #1 : Март 27, 2006, 22:39 »

Цитата: "i9"
Народ, а кто-нить работал с сабжем под виндой? Не получается дрова скомпилить - то иные каталоги инклудников, то не находит pid_t тип.

PS Сама идея взять дрова из qt4 наверное абсурдная.


Чем компилим?
З.Ы. Дрова от четверки не пойдут.
Записан
i9
Гость
« Ответ #2 : Март 28, 2006, 01:10 »

Цитата: "SLiDER"
Чем компилим?

VisualC 6-я

PS под линой-то данная связка живет, должна и под виндой жить...
Записан
SLiDER
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #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
Гость
« Ответ #10 : Апрель 02, 2006, 14:25 »

Цитата: "i9"
А разве Qt скомпиленая под VS6 не сможет использовать dll-ку скомпиленую VS2005? Этож на подобии если я буду компилить свою прогу  VS6, которая будет юзать системные dll-ки, скомпиленые явно не с VS6. Или я ошибаюсь?


Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
З.Ы. Еще могут возникнуть проблемы совместимости из-за немного разных версий Qt, хотя вероятность этого не слишком велика.
Записан
i9
Гость
« Ответ #11 : Апрель 02, 2006, 14:40 »

Цитата: "SLiDER"
Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...
Записан
SLiDER
Гость
« Ответ #12 : Апрель 02, 2006, 14:57 »

Цитата: "i9"
Цитата: "SLiDER"
Тут все дело в том, что для линковки этой dll, Qt будет использовать соответствующий lib-файл, а вот тут-то, как раз, и вылезет бинарная не совместимость. Если только вы сами, средствами своей среды разработки, не создадите такой lib-файл. Честно говоря не помню есть ли в составе VS6 подобные утилиты.
А зачем мне линковать эту dll-ку, я ее просто кину в каталог и с проектом. Если я драйвер плагином делаю, то он ведь не линкуется... Хотя... Ладно, когда прийдет письмо (хотбокс рулит) будет видно...


А программу без lib-файла как компилировать будете, откуда линкеру символы таскать для линковки? В Qt, вроде бы, загрузка плагинов посредством вызова LoadLibrary не предусмотрена (судя по исходникам), а как еще по другому dll загружать?
Записан
i9
Гость
« Ответ #13 : Апрель 02, 2006, 15:36 »

Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет... Грустный
Записан
SLiDER
Гость
« Ответ #14 : Апрель 02, 2006, 15:43 »

Цитата: "i9"
Если не затруднит, вышлите еще раз драйвер, но уже на eer3$yandex.ru - боюсь на hotbox оно уже не прийдет... Грустный


Ушло.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 21.