Подскажите пожалуйста, кто делал 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 компилируется нормально.