O Harbour já tem isso, não precisa de dll.
Criei a função genérica de chamadas desse tipo de dll (o normal pra API Windows é HB_DYN_CALL_CONV_STD)
Código: Selecionar todos
#include "hbdyn.ch"
FUNCTION CallDllCDecl( cDll, cName, ... )
LOCAL hDll, xResult
hDll := hb_LibLoad( cDll )
xResult := hb_DynCall( { cName, hDll, HB_DYN_CALLCONV_CDECL }, ... )
hb_LibFree( hDll )
RETURN xResult
Código: Selecionar todos
FUNCTION GZip( cTextInput )
LOCAL cTextOutput, nLenInput, nLenOutput
nLenInput := Len( cTextInput )
nLenOutput := nLenInput + 5000
cTextOutput := Space( nLenOutput )
CallDllCDecl( "zlib1.dll", "compress", @cTextOutput, @nLenOutput, cTextInput, nLenInput, 6 )
RETURN Left( cTextOutput, nlenOutput )
Código: Selecionar todos
PROCEDURE Main
SetMode(33,100)
CLS
? gzip( "test" )
Inkey(0)
RETURN
No caso do xharbour, é encontrar o equivalente de chamadas de DLL tipo CDECL (sei lá o que é isso)
Dependendo da finalidade, talvez adicionar hb_Base64Encode( cResultado )
