Subject RE: [ib-support] Re: UDF with ANSI C++
Author Thomas Steinmaurer
Markus,

> > - What InterBase version are you using?
> Firebird 1.0
>
> > - How was the UDF declared in your database?
> DECLARE EXTERNAL FUNCTION StrTrim
> CSTRING(255)
> RETURNS CSTRING(255)
> ENTRY_POINT 'strtrim' MODULE_NAME 'eq_UDF';
>
> > - Be aware that library names and entry points are case-sensitive
> I am! I have changed the cases several times without success. I also
> checked
> the case of the entrypoint with "nm" under linux and it had the
> correct
> case.

So,

- you have a (case-sensitive) shared object 'eq_UDF.so' in the
%Firebird%/UDF directory?
- the UDF library exports a (case-sensitive) function called
'strtrim'?

I would give it a try from scratch.

- Drop the external function from your database
- Stop Firebird
- Put the UDF library into the %Firebird%/UDF directory
- Start Firebird
- Declare the external function in your database
- Try to use it

If you took care about case-sensitivity and the location of
the UDF library (btw, have you changed the expected UDF
location in the ibconfig (Windows) resp. isc_config (Linux)
file?) and your UDF still doesn't work after doing the
above steps, then I have no other idea, perhaps it can be
a C++ export declaration thing ...


HTH,
Thomas.