Subject | Firebird 2.5 64 bit and UDFs not loading |
---|---|
Author | |
Post date | 2015-10-02T21:37:01Z |
I have been running Firebird 2.5 (32 bit) for sometime - in Windows 7 64 bit. I use one of my own UDFs and FreeAdhocUDF for a lot of my queries.
I am now trying to get Firebird 64 bit Super Server to work. The exact version is Firebird-2.5.4.26856_0_x64. No problems there. My application (in Delphi) is 32 bit and I am connecting using the 32 bit client. I also use FBMaestro (32 bit) to connect and no problems. Any operation that does not need th e UDFs is fine.
The only problem I have is that I cannot get the 64 bit UDFs to work. If I try to call a UDF I get the well known error
C:\Program Files\Firebird\Firebird_2_5\UDF
The FreeAdHoc one is called FreeAdhocUDF.dll.
There is no other copy of this file anywhere on the computer (ie not in the PATH somewhere).
The definition for the UDF is in the database - ie
DECLARE EXTERNAL FUNCTION F_ADDDAY
TIMESTAMP,
INTEGER
RETURNS TIMESTAMP FREE_IT
ENTRY_POINT 'addday' MODULE_NAME 'FreeAdhocUDF';
this works just fine in the 32 bit Firebird.
In the Firebird.conf file I have the UDF line commented out ie
#UdfAccess = Restrict UDF
But I have tried a number of combinations here.
UdfAccess = Restrict UDF ,etc
nothing works.
I have tried this in Windows 7 x64 and Windows 10 x64. I have my own UDF.DLL compiled as 64 bit and I have the same problem with that file. I only mention FreeAdhocUDF here as I guess a lot of people use it - and if I can get that to work, then my DLL should also work.
After every change, I restart the Firebird service.
Any suggestions on what to do next would be much welcomed.
I am now trying to get Firebird 64 bit Super Server to work. The exact version is Firebird-2.5.4.26856_0_x64. No problems there. My application (in Delphi) is 32 bit and I am connecting using the 32 bit client. I also use FBMaestro (32 bit) to connect and no problems. Any operation that does not need th e UDFs is fine.
The only problem I have is that I cannot get the 64 bit UDFs to work. If I try to call a UDF I get the well known error
invalid request BLR at offset 59
function F_ADDDAY is not defined
module name or entrypoint could not be found
The UDFs are 64 bit (the file is WIN64_FreeAdhocUDF20101206), and they are in the Firebird UDF folder.C:\Program Files\Firebird\Firebird_2_5\UDF
The FreeAdHoc one is called FreeAdhocUDF.dll.
There is no other copy of this file anywhere on the computer (ie not in the PATH somewhere).
The definition for the UDF is in the database - ie
DECLARE EXTERNAL FUNCTION F_ADDDAY
TIMESTAMP,
INTEGER
RETURNS TIMESTAMP FREE_IT
ENTRY_POINT 'addday' MODULE_NAME 'FreeAdhocUDF';
this works just fine in the 32 bit Firebird.
In the Firebird.conf file I have the UDF line commented out ie
#UdfAccess = Restrict UDF
But I have tried a number of combinations here.
UdfAccess = Restrict UDF ,etc
nothing works.
I have tried this in Windows 7 x64 and Windows 10 x64. I have my own UDF.DLL compiled as 64 bit and I have the same problem with that file. I only mention FreeAdhocUDF here as I guess a lot of people use it - and if I can get that to work, then my DLL should also work.
After every change, I restart the Firebird service.
Any suggestions on what to do next would be much welcomed.