Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FireBird UDF 64 bit

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

zubrytsky

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как создать библиотеку UDF для сервера FireBird 2.5 64bit?
 
Нужно написать несколько функций, включить их в библитеку 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
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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zubrytsky
Либо разбираться с кросс-компиляцией win32/win64, либо искать 64-битный windows. Я бы делал второе. Проще всего - установив на своем 32-битном какий-нибудь virtualbox и уже в нем - нужную ОС с необходимым софтом.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 16:34 19-05-2014
zubrytsky

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



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

Цитата:
Что значит "не может"? Она должна жить на сервере бд. Да и zubrytsky об этом же и писал:  

А, ну да, ошибся я, простите ).
Не доглядел.
Присоединяюсь к совету с VirtualBox. Сам использую - удобно очень, он даже портабельный есть.
Я взял флешку скоростную USB3, 32 Гб, создал ВТОРЫМ разделом загрузочный живой линукс с возможностью установки софта, поднял на нем виртуалбокс, а на первом разделе положил саму виртуальную машину, и портабельный виртуалбокс на всякий пожарный.
Таким образом я получил замечательный комплект, который можно запустить где угодно и как угодно.

Всего записей: 283 | Зарегистр. 20-09-2006 | Отправлено: 11:25 26-05-2014
zubrytsky

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Еще один вопрос. По той же теме - FireBird UDF 64 bit.
Воспользовался советами, стал разбираться с Lazarus.
 
У меня на компьютере Windows 7  32 bit. Библиотеку UDF надо сделать для FireBird-сервера 2.5 64 bit, установленного под Windows Server 2008 64 bit.  
 
lazarus-1.2.2-fpc-2.6.4-win32.exe - установил себе эту версию Lazarus
lazarus-1.2.2-fpc-2.6.4-cross-x86_64-win64-win32.exe - плюс этот пакет для генерации 64bit библиотек.
 
В свойствах проекта в 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:
 
select f_suma(10,20) from arch - результат функции 0 ,  а не 30
select f_suma(tpov, tcv) from arch - тоже результат столбик с нулями
 
Что не так сделано?
 
Если В свойствах проекта  Win32 и  i386, то есть библиотека 32bit и записать ее на 32bit - сервер - функция работает.
Значит, ошибка где-то в этих 64bit.
 
Пробовал делать еще проще: Result:=1000. Под FireBird 32 bit - работает, под FireBird 64 bit - результат функции снова 0. Ошибки нет, но и результата нет.
 
Может, кто-то подскажет?

Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 13:03 06-06-2014
zubrytsky

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может, кто-то даст ответ на предыдущий вопрос. Заранее спасибо

Всего записей: 14 | Зарегистр. 25-01-2007 | Отправлено: 12:43 16-06-2014
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zubrytsky
 
Здесь уже надо смотреть на месте - предупреждения, логи и подсказки компилятора, логи firebird-а при вызове функции. Я бы еще пробовал установить 64-битную ОС в виртуалке, в ней ставить 64-битный лазарус и компилировать проект в такой среде.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 10:35 19-06-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » FireBird UDF 64 bit


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru