Bonjour,

Je rencontre un problème d'utilisation d'une UDF:

Je suis sous Fb2.5 64.
Je teste sous Ibexpert.
Ma Dll complilée en 64 bits est enregistrée dans le répertoire UDF de firebird.

La déclaration est la suivante, extrait de IbExpert:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
DECLARE EXTERNAL FUNCTION TESTUDF    VARCHAR(255) CHARACTER SET NONE NULL
RETURNS INTEGER BY VALUE
ENTRY_POINT 'LogFb' MODULE_NAME 'TraceFb.dll';
Le code de ma dll est très simple, juste de quoi tester l'appel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
library TraceFb;
uses
  System.SysUtils,
  System.Classes;
{$R *.res}
function LogFb(value: pchar): integer;cdecl;
begin
     result:= -1;
     try
        result:= 0;
     except
     end;
end;
exports
       LogFb;
begin
end.
Pour la tester j'ai une procedure stockée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SET TERM ^ ;CREATE OR ALTER PROCEDURE PSCALLUDF 
returns (
    result integer)
as
begin
     select testudf(fdTest) from tbltest into :result;
end^
SET TERM ; ^
Quand je tente de compliler ma PS j'ai le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Invalid token.
invalid request BLR at offset 48.
function TESTUDF is not defined.
module name or entrypoint could not be found.
Error while parsing procedure PSCALLUDF's BLR.
Manifestement soit FB ne trouve pas la dll dans le dossier UDF soit c'est la fonction LogFb qui n'est pas trouvée.

Mais pourquoi ?
En sachant que j'ai regardé UDFaccess, que je l'ai changé la conf avec une entrée explicite:
UdfAccess = 'C:\Program Files\Firebird\Firebird_2_5\UDF\'

que j'ai aussi essayé en compilant la DLL en 32 bits.
J'ai rebooté à chaque fois mon poste.

Bref je sais plus où regarder !
J'ai sûrement fait une erreur ou un oublis qq. part, mais là je ne vois pas.

merci pour votre aide.