![]() |
|
![]() ![]() ![]() |
|
A3B2C1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Здравствуйте.
Помогите разобратся в ситуации. Под Windows пытаюсь соединится с БД PostgreSQL средствами Qt4. При подключении к БД PostgreSQL приложение "зависает". Проект приложения был откомпилирован и собран. Если устанавливать контрольные точки breakpoints в строке, отвечающей за соединение с базой данных и последующей, то в первую breakpoint программа попадает, а во вторую нет. Такое ощущение, что программа, должна подсоединится к dll, а не может её найти. Поискав в интернете, я нашёл, что такая dll называется qsqlpsql.dll и получается она путём сборки проекта psql.pro из каталога: C:\Qt\4.3.4\src\plugins\sqldrivers\psql. При попытке собрать проект получаю: "..\..\..\sql\drivers\psql\qsql_psql.cpp:57:22: libpq-fe.h: No such file or directory" и сообщения об ошибках, состоящих в том, что функции, используемые в прогамме, не найдены. По поиску на компьютере, файла с названием libpq-fe.h я не нашёл, но нашёл файл "C:\Windows\system32\libpg.dll" Может кто либо подскажет, чего не хватает для соединения с БД? |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Этот файл относится к исходникам Слона, если память не изменяет его подключают к модулю при использовании функций PostgreSQL. В инклюдах скорее всего забыл прописать путь к собраным исходникам Слона.
А еще ридми полезно читать в той же папке:
Это сообщение отредактировал(а) SABROG - 7.7.2008, 12:39 |
|||
|
||||
A3B2C1 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Спасибо за пояснения.
При попытке осуществить установку плагинов согласно "sql-driver.html":
из командной строки - ничего не получилось, хотя я заменил "C:\psql" на путь, куда у меня установлен PostgreSQL. Попытался собрать исходники: Снова натолкнулся снова на проблемы: "cannot find -lpq" Файла pq.dll по поиску на своём компьятере я не нашёл, но нашёл файл "C:\WINDOWS\system32\libpq.dll". Я его скопировал в папку, где располагается psql.pro, и заменил сам psql.pro с
на
Снова получил аналогичное: "cannot find -llibpq" Буду признателен если чего подскажет кто. |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
||||
|
||||
A3B2C1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Из книжки М.Шлее прочитал, что для того чтобы использовать библиотеку my_dyn_lib,
необходимо в pro файле прописать LIBS += -lmy_dyn_lib. Этим подключается библиотека my_din_lib. При этом библиотека загружается при запуске использующей её программы. Да, там ещё надо указать каталог заголовочных файлов в секции INCLUDEPATH. Но откуда этот каталог взять, если есть только голая библиотека dll? Добавлено через 3 минуты и 38 секунд JackYF: грубо говоря - если используем pq.dll - получаем "cannot find -lpq" - если используем libpq.dll - получаем "cannot find -llibpq" |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Должен быть файл libpq.lib, если его нет, значит PostgreSQL установлен как-то не так или просто путь не верный.
Точно не уверен, но имхо фишка с преобразованием "pq" в "libpq" чисто gccшная. P.S.: dllки никогда не линковались к программе, линкуются .lib и .a файлы. Это сообщение отредактировал(а) SABROG - 7.7.2008, 15:10 |
|||
|
||||
A3B2C1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Файла libpq.lib нет. Его случайно нельзя сделать из libpq.dll? А если переустанавливать, то какие настройки должны быть, чтобы этот файл всё таки бы организовался?
|
|||
|
||||
GRONN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 8.3.2007 Репутация: нет Всего: нет |
Если нет libpq.lib (%PSQLDIR%/lib) - непорядок. А Вы указали при установке БД опцию установки include файлов и файлов библиотек? Должен появиться libpq.lib, после чего можно будет уже собирать проект, используя этот файл. Может повылезать куча ошибок линковки (тогда придется шаманить чтобы из lib и dll сделать a-файл), но, насколько я понял, это уже другая история =)
Поправьте если неправ, я сам только недавно с этим разобрался вроде... С уважением, Алексей |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вообще странно то, что в мелкософтовский link'ер должен передаваться явно gccшный ключ -l. Qt не для mingw случаем ? А еще пробелов не должно быть в пути к библиотекам. Это сообщение отредактировал(а) SABROG - 7.7.2008, 15:51 |
|||
|
||||
A3B2C1 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Для SABROG: Да действительно Qt для MinGW.
Для CRONN: Взял другой установщик PostgreSQL, переустановил. Получил файл libpq.lib. Выполнил предписание справочной ситемы для установки plugin:
Правда файла nmake я не нашёл. Использовал вместо него make.bat. Получил файл qsqlpsql4.dll. Скопировал его в каталог где находится файл pro для соединения с БД. Прописал в файле pro:
, где "C:\Qt\4.3.4\plugins\sqldrivers" - место где находится qsql_psql.h. Начал пересобирать проект. Получил знакомое "cannot find -lqsqlpsql4" Может я чего не понимаю? |
||||
|
|||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Если Qt под Mingw, то про nmake и .lib файлы надо забыть. Что надо сделать:
- собрать PostgreSQL с помощью mingw собирать драйвер как для юникса:
Только пути указать виндовые. |
|||
|
||||
A3B2C1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Для SABROG: Нечто подобное я уже проделал.
Демо проект из Qt подключается к PostgreSQL (правда при запуске не из под debug ). Однако в своём проекте мне подключиться не удаётся. ![]() |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
||||
|
||||
A3B2C1 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Вот что написано в make.bat:
Ну пускай подгрузкой занимается сама Qt. Тогда почему в одном случае (demos) выстраивается список из одного количества драйверов по вызову
а в другом проекте по вызову аналогичного
из комбобокса вываливается другой список, в котором QPSQL не присутствует? |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
1. Где находится твоя длл-ка с плагином?
2. Покажи текст проектов и сами *.pro-файлы. |
|||
|
||||
A3B2C1 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Для Любитель
1. Расположение dll: "C:\Qt\4.3.4\plugins\sqldrivers\qsqlpsql4.dll" Правда для того проекта который не отображает QPSQL она ещё скопирована в каталог где файл pro 2. Текст файлов pro для demo:
Текст файлов pro для того проекта который не отображает QPSQL:
Что вы понимаете под текстами проектов? |
||||
|
|||||
A3B2C1 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Для Любитель
длл-ка с плагином находится в "C:\Qt\4.3.4\plugins\sqldrivers\qsqlpsql4.dll" *pro - файлы (успешное соединение):
не успешное соединение (нет драйвера PQSQL):
|
||||
|
|||||
A3B2C1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
Всем доброго дня.
Если IDE QDevelop установить в меню Проект->Свойства (назв.пр.) в закладке "конфигурация" в секции "версия" выбрать "release", то драйвер PQSQL находится. Не знаю чем это объясняется, но заработало. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |