Как подключить udf к firebird

Как подключить udf к firebird

Доброго времени суток, уважаемые!

Описание проблемы:
Firebird версии 1.0.0.706 (в общем, последний на 25 января 2002 update к RC2).
В скрипте делаю объявление UDF
DECLARE EXTERNAL FUNCTION GetFullName
CSTRING(100),
CSTRING(6),
CSTRING(55),
CSTRING(55),
CSTRING(55),
CSTRING(6)
RETURNS CSTRING(170) ENTRY_POINT «GenerateFormattedName» MODULE_NAME «IBUDFLib.dll»;

При построении базы это проходит (Ok).

ALTER TABLE CHIEFS ADD CH_FULL_NAME COMPUTED BY (GETFULLNAME(«\\ \P\\ \F\\ \M\\\L\, \\S», CH_NAME_PREFIX, CH_NAME, CH_MIDDLE_NAME, CH_LAST_NAME, CH_NAME_SUFFIX));
И вот тут ошибка (Invalid token. Invalid request BLR at offest 2. Function GETFULLNAME is not defined, module name or entrypoint could not be found).

Вопрос: Почему? В чём проблема, собственно?

С наилучшими пожеланиями,
Дмитрий
ICQ: 58245670
Odigo: 6549174


Alexandr ( 2002-01-30 11:56 ) [1]

надо в Firebird/UDF положить.
А эта твоя UDF другие dll не использует? А если использует, то видит ли она их?


sdn ( 2002-01-31 10:06 ) [2]

>> Alexandr
Нет, другие dll не используются. там полная реализация функции.
Про Firebird\UDF. Ok. попробую. это хорошая мысль Ж-) Результат опубликую.


Alexandr ( 2002-01-31 10:25 ) [3]

да-да.
написамо же что UDF должны быть в каталоге UDF


sdn ( 2002-01-31 15:03 ) [4]

Источник

Как подключить udf к firebird

Доброго времени суток, уважаемые!

Описание проблемы:
Firebird версии 1.0.0.706 (в общем, последний на 25 января 2002 update к RC2).
В скрипте делаю объявление UDF
DECLARE EXTERNAL FUNCTION GetFullName
CSTRING(100),
CSTRING(6),
CSTRING(55),
CSTRING(55),
CSTRING(55),
CSTRING(6)
RETURNS CSTRING(170) ENTRY_POINT «GenerateFormattedName» MODULE_NAME «IBUDFLib.dll»;

При построении базы это проходит (Ok).

READ  Как подключить мобильный банк псб

ALTER TABLE CHIEFS ADD CH_FULL_NAME COMPUTED BY (GETFULLNAME(«\\ \P\\ \F\\ \M\\\L\, \\S», CH_NAME_PREFIX, CH_NAME, CH_MIDDLE_NAME, CH_LAST_NAME, CH_NAME_SUFFIX));
И вот тут ошибка (Invalid token. Invalid request BLR at offest 2. Function GETFULLNAME is not defined, module name or entrypoint could not be found).

Вопрос: Почему? В чём проблема, собственно?

С наилучшими пожеланиями,
Дмитрий
ICQ: 58245670
Odigo: 6549174


Alexandr ( 2002-01-30 11:56 ) [1]

надо в Firebird/UDF положить.
А эта твоя UDF другие dll не использует? А если использует, то видит ли она их?


sdn ( 2002-01-31 10:06 ) [2]

>> Alexandr
Нет, другие dll не используются. там полная реализация функции.
Про Firebird\UDF. Ok. попробую. это хорошая мысль Ж-) Результат опубликую.


Alexandr ( 2002-01-31 10:25 ) [3]

да-да.
написамо же что UDF должны быть в каталоге UDF


sdn ( 2002-01-31 15:03 ) [4]

Источник

Как подключить udf к firebird

Нужно написать несколько функций, включить их в библитеку UDF для сервера FireBird 2.5 64 bit.

С написанием библиотеки UDF за несколько недель таки разобрался. Использовал Delphi 7.0. Все работает. Но оказалось, что у меня сервер FireBird 32 bit.
Невозможно перененести сделанную работу на сервер FireBird 64 bit. Следующая ошибка:
Invalid token.
invalid request BLR at offset 65.
function F_SUMA is not defined.
module name or entrypoint could not be found.

Понял, что причина в том, что библиотека 32bit не хочет работать на сервере 64bit. Какой программой создать библиотеку UDF для сервера FireBird 2.5 64bit? Очень желательно, чтобы использовать Pascal, а не Си.

Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 09:49 19-05-2014
READ  Как подключить ленту дхо
exteris

Member

Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата:

Какой программой создать библиотеку UDF для сервера FireBird 2.5 64bit?

Последние версии Delphi(начиная с 2010, вроде) или Lazarus.

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 10:39 19-05-2014
zubrytsky

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору На сайте http://sourceforge.net/projects/lazarus/files/ есть версии
Lazarus Windows 64 bits
Lazarus Windows 32 bits

На моем компьютере Windows 7 32bit, а надо создать библиотеку для FireBird 64bit, который стоит на сервере Windows 2008 Server 64bit?

Какую версию Lazarus скачивать, чтобы создавать библиотеку на своем компьютере, а использовать на сервере?

Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 11:36 19-05-2014
miwa

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо!
Может, есть какие-нибудь ссылки именно об генерации 64bit-библиотек на Lazarus? Для меня здесь все новое.
Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 11:45 20-05-2014
miwa

Full Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору zubrytsky
Раз, два.
Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 12:46 20-05-2014
zubrytsky

Newbie

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо!
А именно об 64-битных библиотеках на Lzarus можна какую-нибудь ссылку?
Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 17:12 22-05-2014
miwa

Full Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору zubrytsky
Считаете, что именно в 64 битах будут все проблемы? Все нюансы работы со строками, int-ами и прочим разрулит компилятор. Я бы для начала скомпилировал минимальный тест и убедился что результат соответствует моим требованиям/ожиданиям, а потом уже искал ответы на конкретные вопросы.
Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 16:21 23-05-2014
rrromano

Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Почему библиотека не может жить на самом сервере БД?
Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 16:28 23-05-2014
miwa

Full Member

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору rrromano
Что значит «не может»? Она должна жить на сервере бд. Да и zubrytsky об этом же и писал:

Цитата:

надо создать библиотеку для FireBird 64bit, который стоит на сервере Windows 2008 Server 64bit

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 17:24 23-05-2014
rrromano

У меня на компьютере Windows 7 32 bit. Библиотеку UDF надо сделать для FireBird-сервера 2.5 64 bit, установленного под Windows Server 2008 64 bit.

В свойствах проекта в Lazarus меняю целевую ОС с Win32 на Win64, семейство процесса меняю с i386 на x86_64. Генерирую простую функцию

function f_suma(var a,b:single):single; cdecl; export; //stdcall;
begin
Result:=a+b;
end;
exports f_suma;

Библиотека генерируется без ошибок. Записываю ее в каталог с:\Program Files\Firebird\Firebird_2_5\UDF

Регистрирую на сервере:
DECLARE EXTERNAL FUNCTION f_suma
float, float
RETURNS float BY VALUE
ENTRY_POINT ‘f_suma’ MODULE_NAME ‘DLL_perepal_64’

Делаю запрос в Ibexpert:

Что не так сделано?

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector