UDF на FreePascal для FireBird на FreeBSD = ошибка

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

Сообщение d_g_v » 29.03.2006 11:43:44

Подскажите пожалуйста, кто делал UDF на Freepascal для FireBird, на SQL форумах не отвечают, решил попытать счастья тут. Проблема в том что скомпиленный .so модуль Firebird не видет ни в какую! Ругается как
Access to UDF library "libtest.so" is denied by server administrator.

НО! дело в том, что с правами все нормально! UDF лежит в разрешенном для Firebird каталоге, владелец и группа нужная, права на чтение и выполнение есть... Рядом в этом же каталоге лежит ib_udf.so который идет с firebird`ом , и из нее все прекрасно работает! Права идентичные что и с моим модулем, SQL декларация правильная.
Написанная тестовая программа на том же Freepascal`e успешно подключает мой модуль и вызывает из нее функцию.
Тоже самое делал на Linux - заработало сразу и без проблем, но мне надо FreeBSD. Возникает мысль, что проблема все-таки зарыта внутри .so модуля и происходит какая то несовместимость с firebird'ом

Если кто нибудь использовал подобное, напишите пожалуйста версию firerbird и freepascal , может мне стоит просто их переставить. Или может нужно компилировать с определенными ключами

==== листинг ====
library test;
{mode objfpc}
uses sysutils;

function myfunction(var i: integer): integer; cdecl; export;
begin
myfunction:=i+5;
end;

exports
myfunction name 'xxx';
end.
==============


P.S.: Firebird 1.5.2_4, freepascal 2.0.2
P.S.S. : И второй вопрос - почему не компилируется код вида:

..........
exports
myfunction;
end.

, а нужно обязательно

..........
exports
myfunction name 'other_name';
end.

В первом случае вылетает :

Compiling test.pp
test.pp(14,1) Error: Asm: Duplicate label myfunction

хотя по идеи ошибки тут не должно быть! Причем под Linux компилируется нормально.
d_g_v
 

Сообщение d_g_v » 29.03.2006 12:17:12

То что текст ошибки Firebird несет не тот смысл подвердил такой тест - взял test.so скомпиленную мною на Linux`е и положил вместо фришной, выставил нужные права. При вызове UDF - firebird падает, что понятно :)))
Получается что firebird находил модуль и подгружал его! И ошибка происходила именно при вызове функции! Выходит какая-то несовместимость с модулями написанными на freepascal`e... А то что текст ошибки другой - то это возможно баг firebird`a или клиента.
Все таки кто использовал UDF на freepascale , напишите пожалуйста.
Спасибо!
d_g_v
 


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

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

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

Рейтинг@Mail.ru