Clipper On Line • Ver Tópico - Usar DLL no Harbour

Usar DLL no Harbour

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

Moderador: Moderadores

 

Usar DLL no Harbour

Mensagempor Eduardo Pinho » 13 Mar 2019 07:07

Amigos,

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

Usar DLL no Harbour

Mensagempor Mario Mesquita » 13 Mar 2019 10:51

Bom dia.

Não sei se ajuda, mas outro dia precisei usar uma DLL e consegui baseado num post de um colega.

No Main:
DECLARE DLL_TYPE_HBITMAP FastQRCode (DLL_TYPE_LPCSTR file, DLL_TYPE_LPCSTR path) IN QrCodeLib.dll


A função:
FUNCTION Gera_FastQRCode(nArq, nTxt)

cTexto := nTxt
cFile  := _xPht + nArq + ".jpg"
FastQRCode(cTexto, cFile)
//msginfo('gerou no fast a imagem '+cfile)

RETURN NIL


Essa função "FastQRCode" está na DLL.

Sds,
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

Usar DLL no Harbour

Mensagempor janio » 13 Mar 2019 12:11

O que pode estar acontecendo tbm eh que algumas dll's retornam um ponteiro para um endereço de memória, e precisamos de uma função pra traduzir esse negocio, tipo:

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"
#include "hbapierr.h"

HB_FUNC( RETORNATAMANHOBUFFER )
{
   hb_retni( strlen( (const char *) hb_parni(1) ) );
}

#pragma ENDDUMP
/*--------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------*/

Function Dll_ConsultarMFE
Local nRandom := HB_RANDOMINT(1,999999)
Local cRet

If nDllMfe != Nil
   cRet := Hb_dynCall( { "ConsultarSAT", nDllMfe, HB_DYN_CALLCONV_STDCALL}, nRandom )
   cRet := HB_Pointer2String( cRet, RetornaTamanhoBuffer(cRet) )
   If Empty(cRet)
      cRet := "ERRO ConsultarMFE: SEM RESPOSTA DO MFE|"   
   Endif
Else
   cRet := "ERRO ConsultarSAT: MFe.Dll nao carregada|"
Endif

Return cRet
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

Usar DLL no Harbour

Mensagempor JoséQuintas » 14 Mar 2019 11:25

DLL específica de Visual Fox só funciona no Visual Fox
DLL específica de Harbour só funciona no Harbour
DLL que contém componente instalável, só funciona instalada
etc.
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: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Usar DLL no Harbour

Mensagempor Eduardo Pinho » 22 Mar 2019 22:38

Obrigado a todos pelas dicas. Vou analisar uma solucao depois.. Valeu mesmo!!!!!
Eduardo Pinho
Colaborador

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

Usar DLL no Harbour

Mensagempor JoséQuintas » 23 Mar 2019 03:41

janio escreveu:O que pode estar acontecendo tbm eh que algumas dll's retornam um ponteiro para um endereço de memória, e precisamos de uma função pra traduzir esse negocio, tipo:


Ué... se precisa ponteiro, é passar ponteiro.
O que normalmente precisa é espaço suficiente na variável.

x:= Space(50000)
FuncaoDll( @x )
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: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Usar DLL no Harbour

Mensagempor Eric.Developer » 24 Mar 2019 20:18

todos vocês estão olhando para a direção errada. Primeiro compreender a geração de DLL no VFP. Em menos de 2 minutos de pesquisa no "guugou", confirmei a minha teoria.
Você gera a DLL COM Server, registra no Windows e acessa a DLL pelo Harbour via OLE.

Outro dia testei com sucesso, criei uma classe para somar 2 número, gerei a DLL no VFP.... acessei pelo Xailer. Estou fazendo outros testes...
A partir de arquivos, exibir formulários (VFP) no IDE Xailer, é o início para auxiliar desenvolvedores na conversão Xailer. Quem sabe no futuro eu consiga converter estes arquivos direto para o formato nativo designer Xailer.

JoséQuintas escreveu:
janio escreveu:O que pode estar acontecendo tbm eh que algumas dll's retornam um ponteiro para um endereço de memória, e precisamos de uma função pra traduzir esse negocio, tipo:


Ué... se precisa ponteiro, é passar ponteiro.
O que normalmente precisa é espaço suficiente na variável.

x:= Space(50000)
FuncaoDll( @x )
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 8 vezes

Usar DLL no Harbour

Mensagempor JoséQuintas » 25 Mar 2019 01:44

Outra opção: usar diretamente o Visual Foxpro, e nem precisar criar DLL

 vfp = win_oleCreateObject("VisualFoxPro.Application")
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: 18152
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Usar DLL no Harbour

Mensagempor vagucs » 26 Jun 2019 18:13

Ola Janio, conseguiu usar a DLL MFE.DLL da sefaz do cerá?

Estou usando hblibload do harbour e nao carrega a dll.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 20 vezes

Usar DLL no Harbour

Mensagempor lucimauro » 26 Jun 2019 23:04

Qual a mensagem de erro que retorna vagucs?
lucimauro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 449
Data de registro: 21 Set 2004 21:02
Cidade/Estado: Sobral-CE
Curtiu: 15 vezes
Mens.Curtidas: 19 vezes

Usar DLL no Harbour

Mensagempor vagucs » 27 Jun 2019 06:21

Poxa, consegui, eu setei o path para o diretório da DLL e foi. Isso se deve a ela usar outras DLLs no diretório.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 20 vezes

Usar DLL no Harbour

Mensagempor janio » 27 Jun 2019 08:15

Poxa, consegui, eu setei o path para o diretório da DLL e foi. Isso se deve a ela usar outras DLLs no diretório.


Exato. Sabemos de alguns casos que so funciona se setar o path onde a dll está (senão da erro de dependência de outras dll's).

No meu caso não precisou disso. Foi so carregar a dll e pronto
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

Usar DLL no Harbour

Mensagempor vagucs » 27 Jun 2019 10:17

Janio,

E conseguiu homologar?

Compramos DIMEP, mas os cara da DIMEP mesmo nao sabem dar suporte, precisamos fazer homologação ainda la, teve algum entrave?

Vi comentários sobre a dll, que tem as mesmas chamadas do SAT, ai fica transparente, porém também vi gente reclamando, que algumas operações não funcionam, como cancelamento, o que sentiu a respeito da DLL? ta fluindo?
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 20 vezes

Usar DLL no Harbour

Mensagempor janio » 27 Jun 2019 10:36

Homologamos no início, beeeeem no início. Com relação ao Cfe e a dll ta tudo funcionando e muito bem. O que não funciona é NFCe (até onde testei não conseguia cancelar uma NFCe)

Outro detalhe eh que pra NFCe obrigatoriamente tem que usar o Integrador. Eh um balaio de gato do cao. So quem vem acompanhando desde o início pra entender
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

Usar DLL no Harbour

Mensagempor vagucs » 27 Jun 2019 10:49

Faço ideia, nosso PDV está homologado e rodando em todos os estados, com NFE, NFCE, SAT e agora mais essa inhaca, fora homologação de PAF-ECF que vamos ter que fazer agora só por causa de SC, é fogo esse brasil, tinhamos que fazer um abaixo assinado para acabar com esse PAF-ECF que é só para dar dinheiro para escolas de ensino que sempre tem um deputado ou senador por trás.

Veja os arquivos que o PDF tem que gerar, tem 8 anos que fazemos a homologação e os arquivos até hoje não tem validador, cada homologador valida como bem entende, tudo no olho e comem todo ano 2 a 3 dias com isso, todo ano temos que adequar ao que o homologador pensa.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar de usuário

vagucs
Membro Master

Membro Master
 
Mensagens: 1466
Data de registro: 10 Jul 2004 10:45
Cidade/Estado: Ipanema - MG
Curtiu: 1 vez
Mens.Curtidas: 20 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 7 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