Clipper On Line • Ver Tópico - Dllload ou hb_LibLoad ?

Dllload ou hb_LibLoad ?

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Dllload ou hb_LibLoad ?

Mensagempor janio » 11 Fev 2019 07:40

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?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dllload ou hb_LibLoad ?

Mensagempor Mario Mesquita » 11 Fev 2019 11:11

Bom dia!

Janio, segundo dica de um colega daqui, Wapi_LoadLibrary(). Fuçando também achei Hb_LibLoad().

Saudações,
Mario.
Avatar de usuário

Mario Mesquita
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 557
Data de registro: 08 Dez 2009 12:47
Cidade/Estado: Rio de Janeiro
Curtiu: 73 vezes
Mens.Curtidas: 13 vezes

Dllload ou hb_LibLoad ?

Mensagempor fladimir » 11 Fev 2019 23:37

usa o hb_dyncall() junto com hb_libload
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2436
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Dllload ou hb_LibLoad ?

Mensagempor janio » 12 Fev 2019 13:53

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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dllload ou hb_LibLoad ?

Mensagempor fladimir » 12 Fev 2019 15:56

isso
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2436
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

Dllload ou hb_LibLoad ?

Mensagempor JoséQuintas » 12 Fev 2019 19:38

Apenas pra "clarear".

hb_DynCall() é função interna do Harbour, não depende do sistema operacional.
Por isso é a mais indicada.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18151
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Dllload ou hb_LibLoad ?

Mensagempor janio » 14 Fev 2019 17:36

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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dllload ou hb_LibLoad ?

Mensagempor JoséQuintas » 14 Fev 2019 18:26

Vê se melhora... usei com a DLL do RMChart.

#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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18151
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Dllload ou hb_LibLoad ?

Mensagempor janio » 14 Fev 2019 20:07

Blz, agora deu certo. Eh que essa função tem parametros diferentes da DllCall(). Com hb_DynCall() o primeiro parametro eh uma array.

Vlw
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Dllload ou hb_LibLoad ?

Mensagempor Eduardo Pinho » 12 Mar 2019 08:50

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.
Eduardo Pinho
Colaborador

Colaborador
 
Mensagens: 71
Data de registro: 13 Jun 2014 19:30
Cidade/Estado: Niteroi
Curtiu: 2 vezes
Mens.Curtidas: 5 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro