[fpc-pascal]UDF + FreePascal + Firebird 1.5

Marco van de Voort marcov at stack.nl
Sat Jul 24 16:21:23 CEST 2004


> I created a UDF, just to test and try to discovery what's wrong.
> I ill explain what I did step by step.
> 
> I created a teste.pas file like this:
> 
> ----
> 
> library teste;
> 
> function intmax(a,b: Integer): Integer; stdcall; export;
> begin
>  if a>b then intmax:=a else intmax:=b;
> end;
> 
> exports
>  intmax;
> 
> end.
> 
> ----
> 
> I compile with freepascal:
> fpc teste
> 
> I moved to udf directory on firebird:
> mv libteste.so /usr/local/firebird/UDF/
> 
> I changed permissions:
> cd /usr/local/firebird/UDF
> chown firebird:firebird libteste.so
> chmod 550 libteste.so
> 
> I declared UDF:
> 
> DECLARE EXTERNAL FUNCTION INTMAX
>    INTEGER,
>    INTEGER
> RETURNS INTEGER BY VALUE
> ENTRY_POINT 'intmax' MODULE_NAME 'teste';
> 
> I test it:
> select intmax(1,2) from rdb$database;
> 
> And I got this error message:
> Invalid token.
> invalid request BLR at offset 60.
> function INTMAX is not defined.
> module name or entrypoint could not be found.
> 
> Does anyone have any ideas?
> 

Are you 100% sure it doesn't have to be cdecl; instead of stdcall on *nix?




More information about the fpc-pascal mailing list