KES wrote:
library tkes2;

{$mode objfpc}
{$PACKRECORDS C}


function somefn: integer; cdecl; export;
begin
 somefn:= 3;
end;

exports
 //I do not do as:
 // somefn name 'somefn'; // because of this cause error tkes2(17,1) Error: 
Asm: Duplicate label somefn

 //so I do as:
 somefn name '_somefn';

end.

#fpc tkes2 -Xp
Free Pascal Compiler version 2.2.0 [2008/11/09] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: FreeBSD/ELF for i386
Compiling tkes2
Linking libtkes2.so
17 lines compiled, 0.1 sec

#ld -shared -soname libtkes2.so.1 -o libtkes2.so.1.0 -lc tkes2.o
#cp tkes2.so /usr/local/libexec/firebird/udf/
#cp tkes2.so.1.0 /usr/local/libexec/firebird/udf/
#cd /usr/local/libexec/firebird/udf/
#ls -l
-rwxr-xr-x  1 root  wheel      6022 12 но� 04:07 libtkes2.so
-rwxr-xr-x  1 root  wheel      3219 12 но� 04:32 libtkes2.so.1.0

# /etc/rc.d/inetd restart
Stopping inetd.
Starting inetd.

in SQL:
DECLARE EXTERNAL FUNCTION FNTEST2
RETURNS INTEGER BY VALUE ENTRY_POINT 'tkes2__somefn'
  MODULE_NAME 'libtkes2'

select fntest2() from sometable;

invalid requiest BLR at offset 64
function FNTEST2 is not defined
module name or entrypoint could not be found

repeat:
DECLARE EXTERNAL FUNCTION FNTEST2
RETURNS INTEGER BY VALUE ENTRY_POINT 'tkes2_somefn'
  MODULE_NAME 'libtkes2'

select fntest2() from sometable;

invalid requiest BLR at offset 64
function FNTEST2 is not defined
module name or entrypoint could not be found

another try:

DECLARE EXTERNAL FUNCTION FNTEST2
RETURNS INTEGER BY VALUE ENTRY_POINT '_somefn'
  MODULE_NAME 'libtkes2'

select fntest2() from sometable;

invalid requiest BLR at offset 64
function FNTEST2 is not defined
module name or entrypoint could not be found


DECLARE EXTERNAL FUNCTION FNTEST2
RETURNS INTEGER BY VALUE ENTRY_POINT 'somefn'
  MODULE_NAME 'libtkes2'

select fntest2() from sometable;

invalid requiest BLR at offset 64
function FNTEST2 is not defined
module name or entrypoint could not be found



What is wrong?


The Firebird message gives two possible causes:
module name OR entry point not found

In your case, it could be that it is the module itself which cannot be located. I noticed you copy tkes2 to the udf folder while you tell firebird the module name is libtkes2.

NB: This does not explain the ls -l which shows libtkes2 entries, unless these are old entries

HTH

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to