Russian Qt Forum

Qt => Базы данных => Тема начата: AYK от Март 07, 2007, 10:42



Название: Драйвер PostgreSQL
Отправлено: AYK от Март 07, 2007, 10:42
Уважаемые коллеги!
Обращаяюсь к Вам за помощью. Помогите разобраться.
Работаю под Windows XP. Пользовался версией QT 4.0.0. И у меня был собранный драйвер для работы с PostgreSQL. Решил перейти на QT 4.2.2 - переустановил библиотеки, а qsqlpsql.dll из версии 4.0.0 просто скопировал в каталог плагинов. Пересобрал приложения и как и предполагал - мои приложения перестали работать. Решил тогда собрать этот драйвер под 4.2.2 сам. Посмотрел документацию,  отредактировал файл проекта, чтобы мэйк видел инклуды и либы от постгрескула:

/*=================
TARGET    = qsqlpsql

HEADERS      = ../../../sql/drivers/psql/qsql_psql.h
SOURCES      = main.cpp \
        ../../../sql/drivers/psql/qsql_psql.cpp
INCLUDEPATH += "C:\Program Files\PostgreSQL\8.0\include"
LIBS += "C:\Program Files\PostgreSQL\8.0\lib\ms\libpq.lib"

unix: {
    !isEmpty(QT_LFLAGS_PSQL) {
        LIBS *= $$QT_LFLAGS_PSQL
        QMAKE_CXXFLAGS *= $$QT_CFLAGS_PSQL
    }
    !contains(LIBS, .*pq.*):LIBS *= -lpq
}

win32:!contains(LIBS, .*pq.* ) {
    !win32-g++:LIBS    *= -llibpq      
    win32-g++:LIBS *= -lpq   
    LIBS    *= -lws2_32 -ladvapi32
}

include(../qsqldriverbase.pri)
/*================================

выполнил qmake.exe - сформировались:
Makefile
Makefile.Debug
Makefile.Release

выполнил mingw32-make.exe  и получил ошибку:
C:\Qt\4.2.2\src\plugins\sqldrivers\psql>mingw32-make.exe
c:/mingw/bin/mingw32-make.exe -f Makefile.Release
Makefile.Release:314: *** multiple target patterns.  Stop.
mingw32-make.exe[1]: Entering directory `C:/Qt/4.2.2/src/plugins/sqldrivers/psql'
mingw32-make.exe[1]: Leaving directory `C:/Qt/4.2.2/src/plugins/sqldrivers/psql'
c:\mingw\bin\mingw32-make.exe: *** [release] Error 2


Что же я не так делаю или чего не доделываю???

Спасибо.


Название: Драйвер PostgreSQL
Отправлено: burunduk от Март 07, 2007, 10:48
да, есть там небольшая беда :)

лучше папки lib и include скопировать куда-нить, чтобы путь к ним был попроще и без пробелов


я вот так собираю Qt с поддержкой Postgres:

configure.exe -fast -qt-sql-psql -I c:/qt/4.2.2/pg823/include -L c:/qt/4.2.2/pg823/lib -l libpq


Название: Драйвер PostgreSQL
Отправлено: WW от Март 07, 2007, 15:04
или переведи пути в формат 8.3 (C:\PROGRA~1\.....)
тогда соберется и там


Название: Драйвер PostgreSQL
Отправлено: AYK от Март 09, 2007, 22:44
спасибо, ребята!  :)

действительно, ваши предложения помогли решить задачу.

QT я пересобрал, причем получил и дебугерные варианты библиотек, чего по-умолчанию (при установке) не было!
Ну и драйвер для PostgreSQL собрал само-собой!
Теперь проги работают! :D

Кому нужен драйвер-плагин для PostgreSQL собранный под QT 4.2.2
прошу запрос на azimut-it@mail.ru  :lol:


Название: Драйвер PostgreSQL
Отправлено: AYK от Март 19, 2007, 17:42
Добрый день, коллеги!

Опять с вопосом.
Пытаюсь внедрить КюТ 4.2.3.
Установил КюТ 4.2.3 под вин опен сорс релизный вариант.
psql как плагин собрал
Проги пересобрал.
Проги подключиться к базе не могут.

Решил пересобрать КюТ
Собираю так:
configure.exe -fast -debug-and-release -qmake -qt-sql-psql -plugin-sql-psql -qt-gif -qt-libpng -qt-libjpeg -qmake -qt-style-windows -qt-style-windowsxp -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -saveconfig azimuth.cfg -I /PostgreSQL/8.2/include -L /PostgreSQL/8.2/lib/ms -l libpq.lib

это отрабатывает. запускаю mingw32-make
он мне выдает
.......

gcc -c -O2 -O2 -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BOOTSTRAPPED -DQT_RCC -DQT_LITE_UNICODE -DQT_NO_DATASTREA
M -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_UNICODETABLES -DQT_NO_LIBRARY -DQT_NO_SYSTEMLOCALE -DQT_NODLL -I"..\..\core
lib\arch\generic" -I"C:/Qt/4.2.3/include" -I"." -I"C:/Qt/4.2.3/include/QtCore" -I"C:/Qt/4.2.3/include/QtXml" -I"..\.
.\3rdparty\zlib" -I"." -I"..\..\..\mkspecs\win32-g++" -o tmp\obj\release_shared\zutil.o ..\..\3rdparty\zlib\zutil.c
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-
subsystem,console -o "..\..\..\bin\rcc.exe" object_script.rcc.Release  -L/PostgreSQL/8.2/lib/ms -llibpq.lib
c:\mingw\bin\..\lib\gcc\mingw32\3.4.4\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibpq.lib
collect2: ld returned 1 exit status
mingw32-make[6]: *** [..\..\..\bin\rcc.exe] Error 1
mingw32-make[6]: Leaving directory `C:/Qt/4.2.3/src/tools/rcc'
mingw32-make[5]: *** [release] Error 2
mingw32-make[5]: Leaving directory `C:/Qt/4.2.3/src/tools/rcc'
mingw32-make[4]: *** [all] Error 2
mingw32-make[4]: Leaving directory `C:/Qt/4.2.3/src/tools/rcc'
mingw32-make[3]: *** [sub-tools_rcc-make_default] Error 2
mingw32-make[3]: Leaving directory `C:/Qt/4.2.3/src'
mingw32-make[2]: *** [all] Error 2
mingw32-make[2]: Leaving directory `C:/Qt/4.2.3/src'
mingw32-make[1]: *** [sub-src-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.2.3'
mingw32-make: *** [all] Error 2


Путь без пробелов, без русских букв.
Что опять не так?


Название: Драйвер PostgreSQL
Отправлено: L.Marvell от Март 19, 2007, 19:25
Есть предположение, что ".lib" лишнее, а писать просто -l libpq


Название: Драйвер PostgreSQL
Отправлено: sector от Март 20, 2007, 09:32
Коллега! Вам истину глаголят по поводу .lib))) Это никак не прокатит...((( Так что я думаю вопрос решен...
Зы: Пользуясь случаем передаю большой привет компании Азимут Ай-Ти от гламурных админов Спецавтоматики)))


Название: Драйвер PostgreSQL
Отправлено: AYK от Март 20, 2007, 13:49
Цитата: "sector"
Коллега! Вам истину глаголят по поводу .lib))) Это никак не прокатит...((( Так что я думаю вопрос решен...
Зы: Пользуясь случаем передаю большой привет компании Азимут Ай-Ти от гламурных админов Спецавтоматики)))

Спасибо за привет! Приятно встретить в форуме не просто коллегу но и гламурного земляка. javascript:emoticon('8)')

Ребята спасибо за советы. Методом научного тыка и сравнения с другими мэйк файлами пришел к тому же выводу самомстоятельно и как следствие получил желаемый результат!javascript:emoticon(':D')

Большое спасибо за участие.javascript:emoticon(':mrgreen:')


Название: Re: Драйвер PostgreSQL
Отправлено: fatdh от Март 29, 2010, 19:09
Доброго времени суток, уважаемые!

Столкнулся с такой ситуацией: Есть GUI приложение, которое работает с PostgreSQL. Структура папок такая: Основная папка, в ней qt библиотеки и исполняемый файл .exe. Также в этой папке есть файл qt.conf - в котором прописано [PATH] Plugins =. и подпапка "sqldrivers" в которой лежит драйвер к PostgreSQL. Так вот проблема, на некоторых Windows XP (2 из 10) при запуске приложения выкидывает ошибку что драйвер не загружен. При этом на остальных XP работает нормально. Пытались локализовать в чем может быть проблема, но ничего не нашли.
Сначала подумали на сервис паки, на одной машине стоит 1й на второй 3й, а на остальных (на которых работет приложение) 2й. Но как-то слабовероятно помоему. Потом подумали, что может из-за русской локализации windows, но опять что-то странное, из 8 машин, на которых нормально работает приложение, половина имеет русскую локаль и переведены они на русский (но у них какие-то скины стоят не стандартные, вполне вероятно, что это англицская винда, а скин делает перевод)..

Может кто сталкивался с такой проблемой, подскажите плз. Спасибо!


Название: Re: Драйвер PostgreSQL
Отправлено: Пантер от Март 29, 2010, 19:46
А libpq.dll на всех машинах присутствует?


Название: Re: Драйвер PostgreSQL
Отправлено: fatdh от Март 29, 2010, 20:13
Да, на серваке лежит архив, все машины с этого сервака берут архив и распаковывают в одно и тоже место на диск C:\


Название: Re: Драйвер PostgreSQL
Отправлено: BaltikS от Март 29, 2010, 20:45
Рискну спросить чем собиралось и как? Если Студией, то возможны проблемы :) со всякими рода зависимостями...


Название: Re: Драйвер PostgreSQL
Отправлено: fatdh от Март 30, 2010, 07:33
Доброе утро, уважаемые!

Спасибо за наводящие вопросы и то, что проявляете интерес! :)

Все собиралось через mingw: Драйвер через mingw32-make, а гуишку через QT Creator (который тоже mingw32-make использует)


Название: Re: Драйвер PostgreSQL
Отправлено: BaltikS от Март 30, 2010, 08:16
Хм, тогда вопрос чем собирался libpq? Нужно посмотреть его зависимости.... Скорее всего дело в нём...


Название: Re: Драйвер PostgreSQL
Отправлено: Пантер от Март 30, 2010, 11:28
Угу. В дистрибутиве постгрес скомпилен студией, поэтому и проблемы. Как решение таскать с собой установщик студийных дллок и манифестов или, что намного лучше, собрать постгрес мингвом.


Название: Re: Драйвер PostgreSQL
Отправлено: fatdh от Март 30, 2010, 14:04
Да, точно, закачали депенденс валкер. Показывает, что не находит библиотеки msvcr80.dll
Всем огромное спасибо за дельные мысли и участие! :)


Название: Re: Драйвер PostgreSQL
Отправлено: kolob от Июнь 16, 2011, 11:34
Люди добрые помогите собрать драйвер для PSQL. На 4ю Qt перешел недавно.
PostgreSql установлен из бинарников. Путь к директории postgres имеет пробелы. Поэтому я скопировал либы и инклюды в корень диска С:
C:\psql\include
C:\psql\lib
В переменной PATH все прописано также (include и lib)
Собрать пытаюсь mingw постовляемой с qtcreator.
Код:
cd C:\Qt\4.6.1\scr\plugins\sqldrivers\psql
qmake
mingw32-make
Выдает ошибку:
Цитировать
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.6.1/src/plugins/sqldrivers/psql
Makefile.Debug:61: *** missing separator.  Stop.
mingw32-make[1]: Leaving directory `C:/Qt/4.6.1/src/plugins/sqldrivers/psql'
mingw32-make: *** [debug-all] Error 2
Нашел в Makefile эту строку:
Цитировать
58 {tmp\moc\debug_shared}.cpp{tmp\obj\debug_shared\}.obj::
59    $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fotmp\obj\debug_shared\ @<<
60    $<
61 <<


Название: Re: Драйвер PostgreSQL
Отправлено: kolob от Июнь 16, 2011, 12:55
Извиняюсь за беспокойство. Все получилось.
У меня в переменной QMAKESPEC - win32-msvc. Надо было переменную поменять на win32-g++