Подключение dll
Модератор: Модераторы
Подключение dll
Делаю прогу для работы с postgreSQL. Использую набор компонентов zeos. Ему для работы нужна библиотека libpq.dll, которая у меня есть, но я понятия не имею, куда ее девать... Когда я делал аналогичную вещь в Delphi, библиотеку достаточно было положить в одну папку с экзешником, и он ее прекрасно находил и подключался к базе. А с lazarus'ом такой фокус не проходит. Он пишет "файл libpq.dll не найден", даже если файл лежит в той же папке. Я пробовал запускать и проект из среды разработки, и просто откомпилированный файл...
- NXP
- постоялец
- Сообщения: 187
- Зарегистрирован: 02.01.2008 15:11:56
- Откуда: Воронеж
- Контактная информация:
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 забудь.
Такой фокус не пройдет, т.к. эта либа тянет за собой несколько других.
Вот список необходимых либ:
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 забудь.
То есть мне все это надо кинуть в папку с exe и заработает? А почему тогда в Delphi все работало с одной libpq, компоненты те же вроде...
Добавлено спустя 9 часов 8 минут 22 секунды:
Хм, кинул. Теперь так: в IDE в свойствах контрола TZConnection ставлю свойство Connected на true, появляется ошибка: "не найдены файлы libpq.dll или libpq81.dll". Запускаю программу из exe - та же ошибка. Кладу библиотеки в папку с программой. Теперь при запуске скомпилированного файла появляется окно с кнопками "OK" и "Cancel" и без всякого текста! Из IDE - по-прежнему не может найти libpq.dll или libpq81.dll...
Добавлено спустя 9 часов 8 минут 22 секунды:
Хм, кинул. Теперь так: в IDE в свойствах контрола TZConnection ставлю свойство Connected на true, появляется ошибка: "не найдены файлы libpq.dll или libpq81.dll". Запускаю программу из exe - та же ошибка. Кладу библиотеки в папку с программой. Теперь при запуске скомпилированного файла появляется окно с кнопками "OK" и "Cancel" и без всякого текста! Из IDE - по-прежнему не может найти libpq.dll или libpq81.dll...
Climber писал(а):в IDE в свойствах контрола TZConnection ставлю свойство Connected на true, появляется ошибка: "не найдены файлы libpq.dll или libpq81.dll".
Это проблемы IDE. DLL'ку нужно положить в корневой каталог Lazarus'а, там IDE её видит. Это относится и к любым другим БД.
Climber писал(а):Теперь при запуске скомпилированного файла появляется окно с кнопками "OK" и "Cancel" и без всякого текста!
У меня было такое с 0.9.26. От типа БД не зависит. В ноябрьском снапшоте Lazarus'а такого не наблюдается. Работаю без проблем.
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) отсюда - это оно?
- NXP
- постоялец
- Сообщения: 187
- Зарегистрирован: 02.01.2008 15:11:56
- Откуда: Воронеж
- Контактная информация:
Climber писал(а):Из IDE - по-прежнему не может найти libpq.dll или libpq81.dll...
У вас вероятно старый Postgres. У меня версия 8.3 как видно из примера.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Короче, заработало так: скачал последний снапшот, поставил, переставил зеос (не без бубна), ЗАНОВО СОЗДАЛ ПРОЕКТ. Этот последний шаг стал ключевым и, видимо, это фича зеоса (сталкивался с ней раньше). Если связка зеос + какая-нибудь IDE начинает глючить, то почему-то после все переустановок проект тоже лучше собрать заново, потому что глюки в нем остаются...
1.
Не надо - если dll-ки лежат в PATH все нормально работает. Zeos запрашивает загрузку dll-файла у винды без указания пути и уже винда ищет их в текущем каталоге, каталоге приложения и в путях, прописанных в переменной окружения PATH. Может быть, стоит в PATH добавить C:\Progra~1\PostgreSQL\8.3\bin.
2.
Да, это проблема IDE - нужна опция "Переходить в каталог проекта при открытии" (к разработчикам).
3.
см. п.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 писал(а):Не надо - если dll-ки лежат в PATH все нормально работает. Zeos запрашивает загрузку dll-файла у винды без указания пути и уже винда ищет их в текущем каталоге, каталоге приложения и в путях, прописанных в переменной окружения PATH.
Перенес сейчас программу на другой комп, положил библиотеки в c:\windows\system32, папку с программой добавил в path, все библиотеки лежат рядом с исполняемым файлом. Программа говорит, что не может найти библиотеки... На моем компе находит... Что не так?
P. S. А еще DBGrid не хочет отображать ячейки, в которых есть русские буквы. Я надеюсь, это лечится...
Climber писал(а):А еще DBGrid не хочет отображать ячейки, в которых есть русские буквы. Я надеюсь, это лечится...
В ZConnection.Properties добавить строчку
Код: Выделить всё
codepage=UTF8А с библиотеками PostgreSQL надо поэкспериментировать. Кстати, после изменения переменных окружения желательно если не перезагрузиться, то хотя бы завершить сеанс.
Сегодня дома попробовал - все работает. Хотя версии лазаруса и зеоса одни и те же дома и не работе...
