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