Russian Qt Forum
Ноябрь 23, 2024, 07:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Использование libpq.dll (PostgreSQL API) в Borland С++ Builder  (Прочитано 14349 раз)
Crazy Sage
Гость
« : Июнь 16, 2009, 14:45 »

Такой вопрос, пытаюсь использовать постгресовскую библиотеку в С++ проекте созданном в борланд билдере.
С помощью implib делаю из .dll .lib, добавляю его в проект, в свои файлы подключаю libpq-fe.h в котором сигнатуры всех функций библиотеки
Dll лежит в каталоге куда все компилируется
На этапе линковки на каждую функцию из этой библиотеки получаю
unresolved extern <имя функции> referenced in <obj файл>
В чем моя ошибка? (с dll раньше не работал, может еще отдельно в проекте саму dll надо указать, помимо .lib и ,h)
Борланд 6й версии
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Июнь 16, 2009, 15:00 »

Цитировать
С помощью implib делаю из .dll .lib, добавляю его в проект, в свои файлы подключаю libpq-fe.h в котором сигнатуры всех функций библиотеки
А разве так можно из динамической библиотеки сделать статическую? о_О

Цитировать
В чем моя ошибка? (с dll раньше не работал, может еще отдельно в проекте саму dll надо указать, помимо .lib и ,h)

ну без преобразования может нужно попробовать подключить библиотеку через QLibrary ? (если она динамическая Улыбающийся )
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #2 : Июнь 16, 2009, 15:14 »

хотя, зачем что-то "левое" использовать, если в QT4 есть поддержка PostgreSQL
Записан

ArchLinux x86_64 / Win10 64 bit
BRE
Гость
« Ответ #3 : Июнь 16, 2009, 15:21 »

хотя, зачем что-то "левое" использовать, если в QT4 есть поддержка PostgreSQL
Я так понял, разговор не про Qt идет... Тема-то в разделе C++.

2 Crazy Sage
Так а ты указаваешь, что бы .lib линковался с проектом или только .h файлы в свои файлы подключаешь?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Июнь 16, 2009, 15:53 »

Упс! Улыбающийся

Тада нужно использовать WinAPI для подгрузки библиотеки Улыбающийся

в гугле написать : "использование dll в Builder / Delphi "
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Июнь 16, 2009, 15:56 »

или сходить на сайт M$ .. например сюда : http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx
Записан

ArchLinux x86_64 / Win10 64 bit
BRE
Гость
« Ответ #6 : Июнь 16, 2009, 16:17 »

Упс! Улыбающийся

Тада нужно использовать WinAPI для подгрузки библиотеки Улыбающийся

в гугле написать : "использование dll в Builder / Delphi "
Улыбающийся
kuzulis, а у тебя Qt как собрана, в виде динамической библиотеки?
А ты ее в main() подгружаешь, что бы использовать ее функционал?
 Подмигивающий

Вот Crazy Sage тоже не хочет libpq руками подгружать.  Улыбающийся
Записан
Crazy Sage
Гость
« Ответ #7 : Июнь 16, 2009, 19:05 »

Я делаю проект->добавить файл и добавляю .lib файл
Полагаю, что это и есть указание, чтобы он линковался с проектом.
Просто у меня весь опыт программирования до сих пор под Linux в KDeveloper'е, поэтому с виндовскими библиотеками я пока просто плаваю.
Если не разберусь буду конечно подключать библиотеку и выдирать адреса по одной функции, но очень не хочется
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Июнь 16, 2009, 19:43 »

Цитировать
kuzulis, а у тебя Qt как собрана, в виде динамической библиотеки?
ДА!
Код:
А ты ее в main() подгружаешь, что бы использовать ее функционал?
тут автоматом компилятор (или хез что) все что нужно подгружает! Улыбающийся
Записан

ArchLinux x86_64 / Win10 64 bit
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #9 : Июнь 16, 2009, 19:52 »

Цитировать
Если не разберусь буду конечно подключать библиотеку и выдирать адреса по одной функции, но очень не хочется
Дык есть такие термины как "статическая загрузка динамической библиотеки" и "динамическая загрузка динамической библиотеки"
это НЕ линковка! Разница в том , что при статической загрузке - она грузится вся при старте приложения.. и если её (библиотеки) вдруг не оказалось в путях её поиска - то приложение завершится с ошибкой.. а если динамически грузить - то там в нужный момент идет подгрузка и выгрузка!!!

Но это все относится к ДИНАМИЧЕСКИМ библиотекам ( ИМХО в силу моей осведомленности) Улыбающийся

А статическая линковка работает ТОЛЬКО для статических библиотек!!!  Улыбающийся И код библы прилинковывается в исполняемый файл приложения!

И я первый раз слышу - что можно преобразовать динамическую библиотеку в ситатическую !! О_о Это невозможно! Улыбающийся Не верю!

А как я понимаю - постгресс. dll - есть ДИНАМИЧЕСКАЯ БИБЛИОТЕКА - и значит работать с ней нужно как с ДИНАМИЧЕСКОЙ!

2 Crazy Sage , ты поройся в гугле все-таки.. для дельфей/билдера - есть много примеров как грузить динамическую библу! Улыбающийся .. и моё ИМХО - не стоит её конвертить в *.lib

Записан

ArchLinux x86_64 / Win10 64 bit
Crazy Sage
Гость
« Ответ #10 : Июнь 16, 2009, 19:55 »

Насколько я понимаю, .lib в данной ситуации является библиотекой-заглушкой, которая автоматически подключает и вытаскивает все функции из .dll-ки
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #11 : Июнь 16, 2009, 20:06 »

Зачем?

Статически (неявно) грузиш свою *.dll и все!!!
вот пример кода неявной загрузки на делфях .. (думаю в билдере разницы не много будет)
Код:
...
var
...
function IsValidlnt(AText: String): Boolean; external 'DataCheck.dll'; 
function IsValidDate(AText: String): Boolean; external 'DataCheck.dll';
...
Улыбающийся проще нет ничо!
Записан

ArchLinux x86_64 / Win10 64 bit
Crazy Sage
Гость
« Ответ #12 : Июнь 16, 2009, 20:08 »

Единственный имеющийся у меня пример на C++ посложнее, там на каждую функцию пишется по 3-4-5 строчек.
Записан
Rcus
Гость
« Ответ #13 : Июнь 16, 2009, 20:23 »

Это все интересно, но, кажется, безсполезно. В дистрибутиве постгреса есть мейкфайл для сборки libpq при помощи bcc в любом виде.
Записан
Crazy Sage
Гость
« Ответ #14 : Июнь 16, 2009, 20:26 »

Ну есть, собирает он собственно те же самые .lib и .dll
Впрочем у меня и их не собирает, ругается на то, что я ему не передаю ключ -N (который я ему передаю)
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.