Hello.

I am unable to resolve the issue with UDF.

Does anyone have any other suggestions?

Thanks in advance.


2013/10/3 firebirddev firebirddev <[email protected]>

> 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