Página 1 de 1
Usar DLL no Harbour
Enviado: 13 Mar 2019 07:07
por Eduardo Pinho
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.
Usar DLL no Harbour
Enviado: 13 Mar 2019 10:51
por Mario Mesquita
Bom dia.
Não sei se ajuda, mas outro dia precisei usar uma DLL e consegui baseado num post de um colega.
No Main:
Código: Selecionar todos
DECLARE DLL_TYPE_HBITMAP FastQRCode (DLL_TYPE_LPCSTR file, DLL_TYPE_LPCSTR path) IN QrCodeLib.dll
A função:
Código: Selecionar todos
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.
Usar DLL no Harbour
Enviado: 13 Mar 2019 12:11
por janio
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:
Código: Selecionar todos
#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
Usar DLL no Harbour
Enviado: 14 Mar 2019 11:25
por JoséQuintas
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.
Usar DLL no Harbour
Enviado: 22 Mar 2019 22:38
por Eduardo Pinho
Obrigado a todos pelas dicas. Vou analisar uma solucao depois.. Valeu mesmo!!!!!
Usar DLL no Harbour
Enviado: 23 Mar 2019 03:41
por JoséQuintas
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 )
Usar DLL no Harbour
Enviado: 25 Mar 2019 01:44
por JoséQuintas
Outra opção: usar diretamente o Visual Foxpro, e nem precisar criar DLL
Usar DLL no Harbour
Enviado: 26 Jun 2019 18:13
por vagucs
Ola Janio, conseguiu usar a DLL MFE.DLL da sefaz do cerá?
Estou usando hblibload do harbour e nao carrega a dll.
Usar DLL no Harbour
Enviado: 26 Jun 2019 23:04
por lucimauro
Qual a mensagem de erro que retorna vagucs?
Usar DLL no Harbour
Enviado: 27 Jun 2019 06:21
por vagucs
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.
Usar DLL no Harbour
Enviado: 27 Jun 2019 08:15
por janio
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
Usar DLL no Harbour
Enviado: 27 Jun 2019 10:17
por vagucs
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?
Usar DLL no Harbour
Enviado: 27 Jun 2019 10:36
por janio
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
Usar DLL no Harbour
Enviado: 27 Jun 2019 10:49
por vagucs
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.
Usar DLL no Harbour
Enviado: 27 Jun 2019 11:06
por janio
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)
Ahhh lembrando que o CFe ta funcionando bem agora, ultimamente. Mas foram quase 2 anos de sofrimento graaaannnde. So passou a funcionar quando tiraram o Integrador do meio e fizeram ajustes no Driver Mfe Sefaz. Agora vc consegue conversar diretamente com a dll.
Agora está igual ao SAT de São Paulo. Vc conversa com a dll... as chamadas a dll são exatamentes as mesmas do SAT. A única diferença que ainda há em relação ao SAT/São Paulo eh que aqui ainda existe a necessidade de instalar o Driver MFe da Sefaz.
Pra resumir ficou assim agora, vc tem 2 maneiras de comunicação com MFe e aí vc escolhe qual quer usar:
1- Maneira antiga pelo Integrador (vc gera um xml na pasta input do Integrador e espera a resposta na pasta Output).
2- Não usa o Integrador e conversa diretamente com a dll, exatamente como São Paulo (esse modo ta funcionando bem)
Quando homologamos so existia a opção com Integrador. Eu não sei se atualmente pode homologar com a opção sem integrador. Lembrando que que a opção por dll eh apenas para comunicaçao com o Mfe. Para o métodos de pagamento ainda eh obrigatorio o Integrador. Como disse... um balaio de gato que so quem vem acompanhando desde o início pra entender
Janio