Página 1 de 1
Dllload ou hb_LibLoad ?
Enviado: 11 Fev 2019 08:40
por janio
Bom dia,
Preciso trabalhar com uma dll e fazendo pesquisas encontrei essas duas funções para carregamento dll - Dllload()/DllUnload() e hb_LibLoad()/hb_LibFree().
A pergunta que me veio na hora foi: Qual usar? Qual a diferença entre as duas?
Dllload ou hb_LibLoad ?
Enviado: 11 Fev 2019 12:11
por Mario Mesquita
Bom dia!
Janio, segundo dica de um colega daqui, Wapi_LoadLibrary(). Fuçando também achei Hb_LibLoad().
Saudações,
Mario.
Dllload ou hb_LibLoad ?
Enviado: 12 Fev 2019 00:37
por fladimir
usa o hb_dyncall() junto com hb_libload
Dllload ou hb_LibLoad ?
Enviado: 12 Fev 2019 14:53
por janio
usa o hb_dyncall() junto com hb_libload
Eita ja apareceu outra? kkk
Recapitulando:
hb_LibLoad() - Carrega a Dll
hb_dyncall() - chama os metodos da Dll
hb_LibFree() - Libera a Dll
Esse seria o mais recomendado ne
Dllload ou hb_LibLoad ?
Enviado: 12 Fev 2019 16:56
por fladimir
isso
Dllload ou hb_LibLoad ?
Enviado: 12 Fev 2019 20:38
por JoséQuintas
Apenas pra "clarear".
hb_DynCall() é função interna do Harbour, não depende do sistema operacional.
Por isso é a mais indicada.
Dllload ou hb_LibLoad ?
Enviado: 14 Fev 2019 18:36
por janio
hb_DynCall() é função interna do Harbour, não depende do sistema operacional.
Com hb_DynCall() o sistema eh abortado sem qualquer aviso.
cRet := hb_DynCall( nDllMfe, 32, "ConsultarStatusOperacionalMFE", nRandom, CodAtivacao )
Colocando
DllCall() no lugar volta a funcionar sem erros
Windows 10 64 bits
Dllload ou hb_LibLoad ?
Enviado: 14 Fev 2019 19:26
por JoséQuintas
Vê se melhora... usei com a DLL do RMChart.
Código: Selecionar todos
#include "hbdyn.ch"
...
METHOD Init() INLINE ::nHandle := hb_libLoad( "RMChart.dll" )
METHOD Destroy() INLINE hb_libFree( ::nHandle )
METHOD AddBarSeries(a,b,c, ... ) INLINE ::CallDllStd( "RMC_ADDBARSERIES", a, b, ::ToDouble( c ), ... )
METHOD CallDllStd( cName, ... ) INLINE hb_DynCall( { cName, ::nHandle, HB_DYN_CALLCONV_STDCALL }, ... )
METHOD ToDecimal( xValue ) INLINE xValue + 1.01 - 1.01
METHOD ToDouble( xValue )
hb_LibLoad() pra carregar a DLL, retorna um ponteiro
hb_LibFree() no final pra liberar a DLL
hb_DynCall() pra chamar rotinas, indicando a conversão padrão
Na conversão "automática" do Harbour, precisa um empurrãozinho pra double e decimal
Por coincidência, exatamente o comentei no problema que estava resolvendo do Flagship.... kkkkk
Dllload ou hb_LibLoad ?
Enviado: 14 Fev 2019 21:07
por janio
Blz, agora deu certo. Eh que essa função tem parametros diferentes da DllCall(). Com hb_DynCall() o primeiro parametro eh uma array.
Vlw
Dllload ou hb_LibLoad ?
Enviado: 12 Mar 2019 08:50
por Eduardo Pinho
Amigos,
Estou com uma duvida, e em vez de abrir outro topico acho que esse topico se encaixa no meu problema.
Uso Harbour 3.0 e quero usar uma DLL que um amigo gerou pra mim pelo Visual Fox.
Só que nao funciona de jeito nenhum...
Essa funciona bem:
Ret:= hb_DynCall( { "MessageBoxA", "user32.dll", HB_DYN_CALLCONV_STDCALL }, 0, "Isto é uma MessageBOX !", "Teste DLL", 0 )
Mas a que ele gerou no Fox nao funciona. Ja tentei carregando primeiro com hb_libload mas nao adiantou.
Ele fez uma pesquisa e disse que descobriu o problema. Disse que o Fox gera DLL orientada a objeto e que o Harbour nao consegue ler dessa forma.
Sabem, por acaso, se isso procede? Se é realmente isso, e se tem alguma forma de fazer ela funcionar?
Agradeço a ajuda. Abcs.