Thanks Sean.

The UDF/DLL is in located in the path described in the firebird.conf:
UdfAccess = Restrict D:\Apps\Firebird\Firebird_2_5\UDF;

Yes, "myDLL.dll' is 32-bit, However my FB installation is 64-bit.  I did
compile the dll to the 64-bit target and copied into the UDF folder.

The problem persists.  Any other clues?

Thanks.



2013/10/2 Leyne, Sean <[email protected]>

> **
>
>
>  ** **
>
> Are you sure that the UDF/DLL is in the %Firebird%\UDF folder?****
>
> ** **
>
> Are you trying to run a 32bit UDF with a 64 bit version of Firebird?****
>
> ** **
>
> ** **
>
> Sean****
>
> ** **
>
> *From:* [email protected] [mailto:
> [email protected]] *On Behalf Of *firebirddev firebirddev
> *Sent:* Wednesday, October 02, 2013 3:13 PM
> *To:* [email protected]
> *Subject:* [firebird-support] UDF and Delphi XE3 Blues****
>
> ** **
>
>
>
>
> ****
>
> Hello.****
>
> ** **
>
> If this is not the right group, kindly direct me to the right group.****
>
> ** **
>
> I have created a UDF and I am getting stuck at the following error:****
>
> ** **
>
> Preparing query: select F_MODULO(3, 2) from rdb$database****
>
> ** **
>
> Error: *** IBPP::SQLException *******
>
> Context: Statement::Prepare( select F_MODULO(3, 2) from rdb$database****
>
>  )****
>
> Message: isc_dsql_prepare failed****
>
> ** **
>
> SQL Message : -104****
>
> Invalid token****
>
> ** **
>
> Engine Code    : 335544343****
>
> Engine Message :****
>
> invalid request BLR at offset 60****
>
> function F_MODULO is not defined****
>
> module name or entrypoint could not be found****
>
> ** **
>
> ** **
>
> Total execution time: 0.003s****
>
> ** **
>
> ** **
>
> Here are the steps I have performed:****
>
> ** **
>
> ===============****
>
> Delphi XE3 code****
>
> ================****
>
> ** **
>
> library myUDF;****
>
> ** **
>
> { Important note about DLL memory management: ShareMem must be the****
>
>   first unit in your library's USES clause AND your project's (select****
>
>   Project-View Source) USES clause if your DLL exports any procedures or**
> **
>
>   functions that pass strings as parameters or function results. This****
>
>   applies to all strings passed to and from your DLL--even those that****
>
>   are nested in records and classes. ShareMem is the interface unit to****
>
>   the BORLNDMM.DLL shared memory manager, which must be deployed along****
>
>   with your DLL. To avoid using BORLNDMM.DLL, pass string information****
>
>   using PChar or ShortString parameters. }****
>
> ** **
>
> uses****
>
>   System.SysUtils,****
>
>   System.Classes;****
>
> ** **
>
> //{$R *.res}****
>
> ** **
>
> function Modulo(var i, j: Integer): Integer; cdecl;****
>
> begin****
>
>   if (j = 0) then****
>
>     result := -1 // just check the boundary condition, and****
>
>   // return a reasonably uninteresting answer.****
>
>   else****
>
>     result := i mod j;****
>
> end;****
>
> ** **
>
> exports****
>
>   Modulo;****
>
> ** **
>
> begin****
>
> end.****
>
> ** **
>
> ==============****
>
> FB 2.5 declaration****
>
> ==============****
>
> ** **
>
> DECLARE EXTERNAL FUNCTION F_MODULO****
>
> Integer, Integer****
>
> RETURNS Integer BY VALUE ****
>
> ENTRY_POINT 'Modulo'****
>
> MODULE_NAME 'myDLL';****
>
> ** **
>
> ==============================****
>
> Calling the function F_MODULO from FB:****
>
> ===============================****
>
> ** **
>
> select F_MODULO(3, 2) from rdb$database****
>
> ** **
>
> ====================****
>
> My firebird.conf looks like:****
>
> =====================****
>
> ** **
>
> UdfAccess = Restrict D:\Apps\Firebird\Firebird_2_5\UDF;****
>
> ** **
>
> Please let me know how I can resolve the problem.****
>
> ** **
>
> Thanks.****
>
>
>
>
> ****
>
> ****
>
>  
>

Reply via email to