Estoy implementando una llamada a una DLL desde un programa hecho con FWH y XHarbour.
El procedimiento para llamar a dicha DLL desde Delphi es
- Code: Select all Expand view RUN
.
.
.
type TError =
(
OK,
Arch_No_Encontrado,
Dato_Obligatorio,
Problemas_Certificado,
Vigencia_Certificado,
LlavePrivada,
Version_CFD_Invalida,
ErrorGeneral
);
function GeneraCFD(IniFileName, ClaveLlavePrivada : PChar) : TError; stdcall; external 'prueba.dll';
if GeneraCFD(PChar(OpenDialog.FileName),PChar(clave)) = OK then
.
.
.
.
Yo la implemente de la siguiente manera:
- Code: Select all Expand view RUN
function Main()
if .not. AbreDLL()
msgAlert('La DLL para crear libreria CFDI no pudo ser abierta')
resallfree()
memory(-1)
PostQuitMessage(0)
__Quit()
quit
endIf
A=GeneraCFD(cDirectorioPrograma+'\Tempo.ini', allTrim(Certs->PassKey) )
msginfo(A)
return NIL
static Function AbreDLL()
LOCAL lRet:=.F.
LOCAL cDllName:="prueba.dll"
hLibCFD:=LoadLibrary(cDllName)
if Abs( hLibCFD ) <= 32
MsgAlert( "Error code: " + LTrim( Str( hLibCFD ) ) + " loading " + cDllName )
lRet:=.F.
else
lRet:=.T.
endif
Return lRet
DLL32 FUNCTION GeneraCFD(cArchivoIni AS LPSTR, cPass AS LPSTR) AS LONG PASCAL FROM "prueba.dll" LIB hLibCFD
El problema es que GeneraCFD en lugar de regresarme un valor entre 0 y 8 me regresa el numero 35628288.
Ya probe con BYTE, _INT y con practimente todos los tipos de datos y siempre obtengo un resultado distinto del esperado.
¿Que estoy haciendo mal?.
¿De que forma puedo llamar esta DLL de forma lenguaje C.
Saludos