powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + Postgresql
25 сообщений из 62, страница 1 из 3
Qt + Postgresql
    #36544627
spair2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, многоуважаемые!
Я начал изучать Qt как платформу для создания кроссплатформенных GUI приложений. Для этих целей был скачен Qt SDK 2009.04. В качестве серверной части решил использовать локальный Postgresql 8.2. Все это работает под Windows XP Pro.
И то и другое работает замечательно...
Вопрос в том, как их вместе подружить?
Следуя инструкциям описанным в мануале к Qt собрать плагин не удается. При сборке после реконфигурации с включением туда опций -plugin-sql-psql -I d:\psql\include -L d:\psql\lib , застревает на сборке WebKit.
И еще, объясните мне пожалуйста четкую разницу между плагином и драйвером?
А можно ли прикрутить уже собранные кем-то плагин или драйвер? Куда их прописывать, чтобы Qt увидела их?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36544793
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фичко в том, что Qt собран с MinGW,
А постгрес собран MS VS.
Мне лично помАгло такое извращение: пересобрал слона под гигвином gcc-ом.
Вроде пашет.
=====================================================
Медицина относит алкоголь и табак к наркотическим веществам. Опьянение - это всего навсего нарушение работы головного мозга в следствие кислородного голодания. Хотите знать больше ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36547794
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне тож интересен данный вопрос.
Вин ХР 32, сп3, енг.
При попытке запустить приложение выскакивает:
QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC
"Ne smogla ya otkrit bazu!1" "Driver not loaded Driver not loaded"
Как правильно добавить PQSQL дрова? И потом, после сборки, на другом компьютере не будет проблем с запуском? Или там тоже нужно будет устанавливать Qt?
И вообще, почему они их не включают автоматом в сборку? :)
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36547811
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, postgresql сервак стоит на другой машинке.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36548207
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никаких проблем со сборкой драйвера postgres не возникает ни в винде, ни в линухе
никакой разницы между driver и plugin нет. просто перейдите в папку с проектом драйвера выполните qmake c опциями "INCLUDEPATH+=path_to_postgres_headers" "LIBS+=path_to_libpq.dll -lpq" psql.pro, затем make

насчет Driver not loaded, может быть несколько причин.

1. Просмотрите есть ли все используемые драйвером библиотеки (libpq.dll и все с ним связанные, а так же vc redistr из установщика PostgresSQL). Это легче делать какой нибудь утилитой просмотра зависимостей библиотек.

2. Просмотрите в каких папка ваша прога ищет драйвер QApplication.libraryPaths(), а вообще попробуйте в директории с программой создать папку sqldrivers (или plugins/sqldrivers) и поместить туда драйвер.


не надо паниковать, как любая другая программа ваша программа на Qt будет требовать чтобы вы деплоили ее с нужными библиотеками, просто четко определите ее зависимости и включайте все библиотеки в инсталлятор программы (ну или носите их вместе с ней, если такого не имеется)
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36549408
sherzod_никаких проблем со сборкой драйвера postgres не возникает ни в винде, ни в линухе
никакой разницы между driver и plugin нет. просто перейдите в папку с проектом драйвера выполните qmake c опциями "INCLUDEPATH+=path_to_postgres_headers" "LIBS+=path_to_libpq.dll -lpq" psql.pro, затем make


Ваш рецепт мне, к сожалению, не помог.
У меня make - вообще отсутствует в системе. Есть только mingw32-make.
Попытка запуска " mingw32-make -f Makefile.Debug all " привела к ошибке ".../mingw32/bin/ld.exe: cannot find -lpq "
Подскажите, куда рыть ?

sherzod_
1. Просмотрите есть ли все используемые драйвером библиотеки (libpq.dll и все с ним связанные, а так же vc redistr из установщика PostgresSQL). Это легче делать какой нибудь утилитой просмотра зависимостей библиотек.


Пару примеров таких утилит, если не трудно.

sherzod_
2. Просмотрите в каких папка ваша прога ищет драйвер QApplication.libraryPaths(), а вообще попробуйте в директории с программой создать папку sqldrivers (или plugins/sqldrivers) и поместить туда драйвер.


Это рецепт тоже не работает.
Выполнив:
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\libpq.lib" psql.pro
mingw32-make -f Makefile.Debug all
я таки скомпилировал драйверы для postgresql-ля.
Но куда я их только не подсовывал - картинка одна и та же - Driver not loaded Driver not loaded
Так всё же куда их засунуть :) ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36549677
PavelVX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_, а можно еще раз и поподробнее? Прям вместе с полным примером команд :). Потом поместим это в фак.
У меня нет исходников постгреса. Он вообще стоит на линухе в другом месте. libpq.dll есть в установочной директории ODBC драйвера pgSQL. Платформа win xp.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36550997
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после установки qt и mingw нужно добавить их директории bin в виндяшный path.

вот вам простой make который использовался в более ранних версиях qt, поместите его в bin папке qt.

make.bat

@echo off
mingw32-make %*

__________________
How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________
в ассистенте есть подробная информация о том как собрать драйвер на различных системых.
без заголовочных файлов драйвер собрать не получится.

насчет примеров утилит под винду не помню (но точно помню что в нете есть что-то бесплатное, когда-то пользовался, погуглите) , под линуху стандартный ldd.

драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости. когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();

люди читайте assistent) лучшей документации не найти.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551206
sherzod_после установки qt и mingw нужно добавить их директории bin в виндяшный path.


Согласен, сделано.

sherzod_
вот вам простой make который использовался в более ранних версиях qt, поместите его в bin папке qt.

make.bat

@echo off
mingw32-make %*


Почему нет, можно и так :)

sherzod_
__________________
How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:\psql\include" "LIBS+=C:\psql\lib\ms\libpq.lib" psql.pro
nmake
__________________


Видать давно Троли постргесс не ставили.
Ну нет там такой поддиректории ...\ms\...
Там просто C:\psql\lib\libpq.lib

sherzod_
драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости.

Эх, кабы знать как проверить, то мыбы ух!

sherzod_
когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();


Это в смысле посмотреть в рантайме куда путь QApplication::libraryPaths() укажет ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551269
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Логуновsherzod_
драйвер правильно загрузится лишь когда все используемые им библиотеки будут или в system32 или в папке программы. проверьте зависимости.
Эх, кабы знать как проверить, то мыбы ух!Открой для себя волшебную утилиту http://www.dependencywalker.com/
Она точно скажет какие dll нужны и где система их сейчас видит.
Но она не поможет на динамически загружаемых библиотеках (в смысле плагинах).

Владимир Логуновsherzod_ когда все зависимости будут решены, можно будет решать куда его совать, это вам подскажет QApplication::libraryPaths();Это в смысле посмотреть в рантайме куда путь QApplication::libraryPaths() укажет ?Да. Это даст список путей по которым программа ищет свои плагины.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551332
sherzod_
Открой для себя волшебную утилиту http://www.dependencywalker.com/
Она точно скажет какие dll нужны и где система их сейчас видит.
Но она не поможет на динамически загружаемых библиотеках (в смысле плагинах).


Спасибо, помогло.

В моём случае надо было добавить в системную переменную PATH следующие элементы:
e:\Qt\2010.02\mingw\bin\;
e:\Qt\2010.02\qt\bin\;
c:\psql\lib\;
c:\psql\bin\
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36551910
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
насчет libraryPaths(), можно использовать судя по документации, так же addLibraryPath(const QString& path), и уж точно установить папку поиска плагинов и библиотек, но на практике в отношении надежности(будет ли это везде и всегда работать) IMH не проверял.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #36553095
А я проверил только что.
На Kubuntu 9.10 + QT Creator 1.3.82 добавление в перечень путей поиска моей поддиректории /lib ничего не даёт :(
Ни драйвер постргесса , ни библиотеки NCReport-ёра оттуда не загружаются.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Qt + Postgresql
    #38732975
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, у меня есть 2-а вопроса: не проходит команда configure -I "c:\psql\include" -L "c:\psql\lib" -plugin-sql-psql
и исходники выдают при make массу ошибок.

На борту: Win, QtSDK 4.8.1. Если у кого есть правильные исходники -очень прошу - выложите, пожалуйста. Буду рад и готовому драйверу, но не халявщик в душе и соберу сам. )

Спасибо!

Исходники, выдающие ошибки приложил к посту.

Модератор: Как твоё сообщение относится к исходному посту данной ветки ? Если никак, опубликуй его отдельной веткой (начни новую), а это сообщение я потом удалю.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733047
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__,

Как собирать "драйвера" для QT SQL написано тут:

http://qt-project.org/doc/qt-5/sql-driver.html#supported-databases

Ты собираешь их неправильно -- configure вызывать НЕ НУЖНО.
Вместо этого используется утилита qmake.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733330
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, благодарю за информацию! Возможно, у меня кривые руки - я теоретик по большей части.
Что касается практики, то QtSDK 1.2.1 offline (исходников QtSDK нет), PostgreSQL 9.3.
Не прошло у меня configure я и "забил" на него. Не поверишь, но:

""How to Build the QPSQL Plugin on Windows

Install the appropriate PostgreSQL developer libraries for your compiler. Assuming that PostgreSQL was installed in C:\psql, build the plugin as follows:

cd %QTDIR%\src\plugins\sqldrivers\psql
qmake "INCLUDEPATH+=C:/psql/include" "LIBS+=C:/psql/lib/ms/libpq.lib" psql.pro
nmake"'

Мои действия:
1. PostgreSQL установлен в директорию: С:\psql\
2. Смысла делать cd %QTDIR%\src\plugins\sqldrivers\psql не вижу, так как у меня отсутствует данная директория )
делаю cd С:\src - исходники старого драйвера мне принес приятель. И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон!!!)
3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-...exe) и надо ли путь к nmake прописывать в переменную окружения Оси?

Спасибо!
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733351
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, про nmake - у меня не msvc, а mingw )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733542
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__MasterZiv, про nmake - у меня не msvc, а mingw )

Тогда не nmake , а make или gmake.

Мог бы и сам догадаться.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733544
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Мои действия:
2. Смысла делать cd %QTDIR%\src\plugins\sqldrivers\psql не вижу, так как у меня отсутствует данная директория )


Это директория с исходнимами "драйвера" SQL для Postgres.
Если у тебя её нет, то что ты собираешься собирать -- не понятно.


Pupil__ делаю cd С:\src - исходники старого драйвера мне принес приятель.



Если ты будешь собирать исходники старого "драйвера" для нового QT, получится полная хрень.
Тебе надо собирать "драйвер" из исходников именно того QT, который ты собираешься использовать.
Его не нужно искать, он лежит в исходниках QT, которые тольконадо попросить установить (или доустановить)
при установке.

Последние QT ставятся вообще из интернета инсталером, там это очень легко доставить.

Pupil__И мы оба не понимаем - должны они подходить для данной платформы или нет. ) Если есть исходники, которые 100% корректные для QtSDK 1.2.1 и Postgre 9.3. - прошу выложить или кинуть линк (Низкий поклон!!!)


QtSDK 1.2.1 -- это что за зверь ? сейчас QT 5.3.1 последний.

Pupil__3.nmake - с чем его едят, файл с каким названием отвечает за данную операцию (qmake - minqw32-...exe) и надо ли путь к nmake прописывать в переменную окружения Оси?


это аналого утилиты make из мира Юникс, но сделаный и доделанный Microsoft-ом.
В MinGW идёт свой make (это GNU make) , он называется либо make, либо gmake, либо mingw-make, как ты написал.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733900
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скачал исходники 4.8.1. Пытаюсь собрать в креаторе плагин Postgre, оно у меня выдает:
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
Что с этим делать?

При попытке собрать в консоли - также не проходит сборка

Или мне весь Qt 4.8.1 полностью пересобрать из сорцов?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733902
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не пишу на последнем Qt в силе обстоятельства. То, что Порш лучше Жигулей - известно всем )
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38733914
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QtSdk-offline-win-x86-v1_2_1
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734225
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Я не пишу на последнем Qt в силе обстоятельства.

Зря.

Хорошо, если оно всё соберётся с последним Postgres... А если нет ?
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734230
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pupil__Скачал исходники 4.8.1. Пытаюсь собрать в креаторе плагин Postgre, оно у меня выдает:
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
Что с этим делать?
При попытке собрать в консоли - также не проходит сборка


Ты не привёл полностью ошибку, я не знаю, что делать.
Сообщение об ошибке явно обрублено.

Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.

Если много -- используй при оформлении сообщения spoiler (находится под кнопкой "дополнит.").


Пока это похоже на использование неверных конфигураций -- собираешь для QT в виде DLL, а исползуешь библиотеки от static lib или наоборот.

Pupil__Или мне весь Qt 4.8.1 полностью пересобрать из сорцов?


Нет, конечно же нет.
...
Рейтинг: 0 / 0
Qt + Postgresql
    #38734242
Pupil__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗря.

Хорошо, если оно всё соберётся с последним Postgres... А если нет ?

- Застрелюсь

авторТы не привёл полностью ошибку, я не знаю, что делать.
Сообщение об ошибке явно обрублено.

Напиши полностью, что делал, какую комманду запускал, и весь её вывод.
Если он большой, выдели одну ошибку характерную, но так, чтобы её текст был виден целиком, лучше прихватить чуть больше информации, чем обрезать.

Если много -- используй при оформлении сообщения spoiler (находится под кнопкой "дополнит.").


Пока это похоже на использование неверных конфигураций -- собираешь для QT в виде DLL, а исползуешь библиотеки от static lib или наоборот.

16:48:30: Выполняется сборка проекта psql...
16:48:30: Настройки не изменились, этап qmake пропускается.
16:48:30: Запускается: «C:\QtSDK\mingw\bin\mingw32-make.exe»
C:/QtSDK/mingw/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/QtSDK/src/psql'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtCore" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtGui" -I"..\..\Desktop\Qt\4.8.1\mingw\include\QtSql" -I"..\..\Desktop\Qt\4.8.1\mingw\include" -I"..\..\Desktop\Qt\4.8.1\mingw\include\ActiveQt" -I"debug" -I"..\..\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o debug\moc_qsql_psql.o debug\moc_qsql_psql.cpp
mingw32-make.exe[1]: Leaving directory `C:/QtSDK/src/psql'
debug\moc_qsql_psql.cpp:50: warning: 'static void QPSQLDriver::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: warning: 'QPSQLDriver::staticMetaObjectExtraData' redeclared without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:72: warning: 'QPSQLDriver::staticMetaObject' redeclared without dllimport attribute after being referenced with dll linkage
debug\moc_qsql_psql.cpp:81: warning: 'virtual const QMetaObject* QPSQLDriver::metaObject() const' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:86: warning: 'virtual void* QPSQLDriver::qt_metacast(const char*)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:94: warning: 'virtual int QPSQLDriver::qt_metacall(QMetaObject::Call, int, void**)' redeclared without dllimport attribute: previous dllimport ignored
debug\moc_qsql_psql.cpp:68: error: definition of static data member 'QPSQLDriver::staticMetaObjectExtraData' of dllimport'd class
mingw32-make.exe[1]: *** [debug/moc_qsql_psql.o] Error 1
mingw32-make.exe: *** [debug] Error 2
16:48:31: Процесс «C:\QtSDK\mingw\bin\mingw32-make.exe» завершился с кодом 2.
Возникла ошибка при сборке проекта psql (цель: Desktop)
Во время выполнения сборки на этапе «Сборка»
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt + Postgresql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]