Подключение dll

Модератор: Модераторы

Подключение dll

Сообщение Climber » 12.11.2008 23:20:06

Делаю прогу для работы с postgreSQL. Использую набор компонентов zeos. Ему для работы нужна библиотека libpq.dll, которая у меня есть, но я понятия не имею, куда ее девать... Когда я делал аналогичную вещь в Delphi, библиотеку достаточно было положить в одну папку с экзешником, и он ее прекрасно находил и подключался к базе. А с lazarus'ом такой фокус не проходит. Он пишет "файл libpq.dll не найден", даже если файл лежит в той же папке. Я пробовал запускать и проект из среды разработки, и просто откомпилированный файл...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Подключение dll

Сообщение NXP » 12.11.2008 23:33:24

Climber
Такой фокус не пройдет, т.к. эта либа тянет за собой несколько других.
Вот список необходимых либ:
comerr32.dll
gssapi32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv2.dll
libintl3.dll
libpq.dll
ssleay32.dll

Все брать из Program Files\PostgreSQL\8.3\bin
Про PATH забудь.
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Подключение dll

Сообщение Climber » 13.11.2008 01:30:11

То есть мне все это надо кинуть в папку с exe и заработает? А почему тогда в Delphi все работало с одной libpq, компоненты те же вроде...

Добавлено спустя 9 часов 8 минут 22 секунды:
Хм, кинул. Теперь так: в IDE в свойствах контрола TZConnection ставлю свойство Connected на true, появляется ошибка: "не найдены файлы libpq.dll или libpq81.dll". Запускаю программу из exe - та же ошибка. Кладу библиотеки в папку с программой. Теперь при запуске скомпилированного файла появляется окно с кнопками "OK" и "Cancel" и без всякого текста! Из IDE - по-прежнему не может найти libpq.dll или libpq81.dll...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Подключение dll

Сообщение Vadim » 13.11.2008 11:35:53

Climber писал(а):в IDE в свойствах контрола TZConnection ставлю свойство Connected на true, появляется ошибка: "не найдены файлы libpq.dll или libpq81.dll".

Это проблемы IDE. DLL'ку нужно положить в корневой каталог Lazarus'а, там IDE её видит. Это относится и к любым другим БД.
Climber писал(а):Теперь при запуске скомпилированного файла появляется окно с кнопками "OK" и "Cancel" и без всякого текста!

У меня было такое с 0.9.26. От типа БД не зависит. В ноябрьском снапшоте Lazarus'а такого не наблюдается. Работаю без проблем.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Подключение dll

Сообщение Climber » 13.11.2008 11:51:01

Vadim писал(а):У меня было такое с 0.9.26. От типа БД не зависит. В ноябрьском снапшоте Lazarus'а такого не наблюдается. Работаю без проблем.

Lazarus fixes + fpc 2.2.2 win32 (Lazarus-0.9.26.1-17353-fpc-2.2.2-20081112-win32.exe) отсюда - это оно?
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Подключение dll

Сообщение NXP » 13.11.2008 11:55:02

Climber писал(а):Из IDE - по-прежнему не может найти libpq.dll или libpq81.dll...

У вас вероятно старый Postgres. У меня версия 8.3 как видно из примера.
xyz.JPG
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж

Re: Подключение dll

Сообщение Climber » 13.11.2008 12:53:23

Короче, заработало так: скачал последний снапшот, поставил, переставил зеос (не без бубна), ЗАНОВО СОЗДАЛ ПРОЕКТ. Этот последний шаг стал ключевым и, видимо, это фича зеоса (сталкивался с ней раньше). Если связка зеос + какая-нибудь IDE начинает глючить, то почему-то после все переустановок проект тоже лучше собрать заново, потому что глюки в нем остаются...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Подключение dll

Сообщение v-t-l » 13.11.2008 13:03:50

1.
NXP писал(а):Про PATH забудь.

Не надо - если dll-ки лежат в PATH все нормально работает. Zeos запрашивает загрузку dll-файла у винды без указания пути и уже винда ищет их в текущем каталоге, каталоге приложения и в путях, прописанных в переменной окружения PATH. Может быть, стоит в PATH добавить C:\Progra~1\PostgreSQL\8.3\bin.

2.
Vadim писал(а):Это проблемы IDE. DLL'ку нужно положить в корневой каталог Lazarus'а, там IDE её видит.

Да, это проблема IDE - нужна опция "Переходить в каталог проекта при открытии" (к разработчикам).

3.
Vadim писал(а):Это относится и к любым другим БД.

см. п.1
v-t-l
энтузиаст
 
Сообщения: 730
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Подключение dll

Сообщение Climber » 13.11.2008 13:33:28

v-t-l писал(а):Не надо - если dll-ки лежат в PATH все нормально работает. Zeos запрашивает загрузку dll-файла у винды без указания пути и уже винда ищет их в текущем каталоге, каталоге приложения и в путях, прописанных в переменной окружения PATH.

Перенес сейчас программу на другой комп, положил библиотеки в c:\windows\system32, папку с программой добавил в path, все библиотеки лежат рядом с исполняемым файлом. Программа говорит, что не может найти библиотеки... На моем компе находит... Что не так?
P. S. А еще DBGrid не хочет отображать ячейки, в которых есть русские буквы. Я надеюсь, это лечится...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Подключение dll

Сообщение v-t-l » 13.11.2008 17:30:52

Climber писал(а):А еще DBGrid не хочет отображать ячейки, в которых есть русские буквы. Я надеюсь, это лечится...

В ZConnection.Properties добавить строчку
Код: Выделить всё
codepage=UTF8
(или UTF-8 или UNICODE, точно не помню.
А с библиотеками PostgreSQL надо поэкспериментировать. Кстати, после изменения переменных окружения желательно если не перезагрузиться, то хотя бы завершить сеанс.
v-t-l
энтузиаст
 
Сообщения: 730
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Подключение dll

Сообщение Climber » 15.11.2008 14:27:20

Сегодня дома попробовал - все работает. Хотя версии лазаруса и зеоса одни и те же дома и не работе...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru
cron