Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Retorno Vazio de Uma Chamada DLL VB.NET


Go to solution Solved by José M. S. Junior,

Recommended Posts

  • Membros Pro

         Estamos iniciando com vcs e estamos declarando no vb.net dessa forma a dll

  1. <DllImport("C:\NATALSys\Retaguarda\ACBr\DLLs\x64\ACBrNFE64.dll", CallingConvention:=CallingConvention.Cdecl)> Public Shared Function NFE_Nome(ByVal buffer As String, ByRef bufferLen As Long) As IntPtr End Function <DllImport("C:\NATALSys\Retaguarda\ACBr\DLLs\x64\ACBrNFE64.dll", CallingConvention:=CallingConvention.Cdecl)> Public Shared Function NFE_Versao(ByVal buffer As String, ByRef bufferLen As Long) As IntPtr End Function
     
    e estamos por exemplo tentando pegar a versão da dll
    retorno = NSysNFe.ACBrNFeCdecl.NFE_Versao(vVersao, bufferLen) Dim strResposta As String = Marshal.PtrToStringAnsi(retorno)
    mais sempre a resposta é vazia
Link to comment
Share on other sites

  • Consultores

Boa tarde @JCarmo

Temos um tópico com um passo a passo para utilizar a lib com VB6, comece sempre utilizando a aplicação exemplo, nela já tem o modelo da classe que instancia a lib e exemplos das chamadas.

A ACBrLib que utilizar precisa ser na mesma arquitetura que está compilando sua aplicação, se está compilando em x86 a lib também precisa ser na versão stcall x86.

 

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Membros Pro
1 hora atrás, José M. S. Junior disse:

Boa tarde @JCarmo

Temos um tópico com um passo a passo para utilizar a lib com VB6, comece sempre utilizando a aplicação exemplo, nela já tem o modelo da classe que instancia a lib e exemplos das chamadas.

A ACBrLib que utilizar precisa ser na mesma arquitetura que está compilando sua aplicação, se está compilando em x86 a lib também precisa ser na versão stcall x86.

 

Olá, estamos usando as chamadas de acordo com a Compilação do SO nosso, já utilizamos cDescl e StdCall e recebemos sempre vazio, estamos testando uma chamada simples saber a versão e o nome da dll no momento, mais essas informações do artigo estão e/ou foram testadas mais recebemos a mesma resposta.

Link to comment
Share on other sites

  • Consultores

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

23 minutos atrás, JCarmo disse:

Olá, estamos usando as chamadas de acordo com a Compilação do SO nosso, já utilizamos cDescl e StdCall e recebemos sempre vazio, estamos testando uma chamada simples saber a versão e o nome da dll no momento, mais essas informações do artigo estão e/ou foram testadas mais recebemos a mesma resposta.

Sim. tudo no ACBr é feito testes por nós antes de subir ao svn

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores
29 minutos atrás, JCarmo disse:

Olá, estamos usando as chamadas de acordo com a Compilação do SO nosso, já utilizamos cDescl e StdCall e recebemos sempre vazio, estamos testando uma chamada simples saber a versão e o nome da dll no momento, mais essas informações do artigo estão e/ou foram testadas mais recebemos a mesma resposta.

A dll usada não deve ser baseada no SO e sim na sua aplicação. Se a aplicação é compilada em 32bits a dll deve ser igual senão vai dar conflito.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Membros Pro

Vamos lá, estamos compilando para x86 no vb.net e utilizando as dll em produção, Stdcall para a dll ACBrNFe32.dll  e o padrão utilizado é o mesmo que vcs estão colocando ai nos posts, mais mesmo assim continuamos recebendo a resposta vazia, não estou usando o teste de vcs e sim as orientações dos posts e material que desde da semana passada recebo, perdemos bastante tempo aqui fazendo pelo nuget e depois nos informaram que vcs não dão suporte e ai tivemos que refazer tudo e agora não estamos tendo sucesso, Se possivel nos envie um exemplo simples mesmo de como pegar a versão da dll em vb.net usando o stdcall ou cdesl.

Link to comment
Share on other sites

  • Consultores
38 minutos atrás, JCarmo disse:

Vamos lá, estamos compilando para x86 no vb.net e utilizando as dll em produção, Stdcall para a dll ACBrNFe32.dll  e o padrão utilizado é o mesmo que vcs estão colocando ai nos posts, mais mesmo assim continuamos recebendo a resposta vazia, não estou usando o teste de vcs e sim as orientações dos posts e material que desde da semana passada recebo, perdemos bastante tempo aqui fazendo pelo nuget e depois nos informaram que vcs não dão suporte e ai tivemos que refazer tudo e agora não estamos tendo sucesso, Se possivel nos envie um exemplo simples mesmo de como pegar a versão da dll em vb.net usando o stdcall ou cdesl.

sim

https://www.projetoacbr.com.br/fontes

após tu baixar via svn na pasta projetos/ACBrLib/Demos tem o exemplo completo

com ele tu deve testar para que possamos lhe ajudar, do lado que cá só conhecemos ele e não sabemos o que está fazendo do seu lado.

image.png

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Consultores
3 horas atrás, JCarmo disse:

Olá, baixamos um demo em c# e compilamos e carregou sem problemas, que procedimento vcs precisa que faça agora?

Pera agora fiquei confuso. seu post é sobre vb.net mas tu está a falar que testou o demo do C#. qual das linguagens está integrando?

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro

Sim meu post é sobre vb.net, como falei ja no post, enviaram para mim um svn para baixar um demo mais não existe demo em vb.net, então baixei em c#, acredito que vc tenha lido no post a minha dificuldade e esta claro ela, se vcs tem uma sugestão ou uma solução nos ajude, vim por esse canal porque fui orientado a colocar aqui a minha duvida e um especialista iria mim auxiliar nela, como já falei aqui somos novos com a lib de vcs, os nosso pdv é desenvolvido em VB.NET e os demais em C#, esse modulo PDV já funciona a bastante tempo com o outro componente mais por opção da empresa optou em trocar para vcs, e repetindo não encontrei nenhum exemplo de vcs em vb.net, existe um em VB6 e estamos usando ele como referência, na documentação de vcs informa que pode usar stdcall no vb.net e dessa forma estamos utilzando mais não obtemos resposta da dll.

Link to comment
Share on other sites

  • Consultores
17 minutos atrás, JCarmo disse:

Sim meu post é sobre vb.net, como falei ja no post, enviaram para mim um svn para baixar um demo mais não existe demo em vb.net, então baixei em c#, acredito que vc tenha lido no post a minha dificuldade e esta claro ela, se vcs tem uma sugestão ou uma solução nos ajude, vim por esse canal porque fui orientado a colocar aqui a minha duvida e um especialista iria mim auxiliar nela, como já falei aqui somos novos com a lib de vcs, os nosso pdv é desenvolvido em VB.NET e os demais em C#, esse modulo PDV já funciona a bastante tempo com o outro componente mais por opção da empresa optou em trocar para vcs, e repetindo não encontrei nenhum exemplo de vcs em vb.net, existe um em VB6 e estamos usando ele como referência, na documentação de vcs informa que pode usar stdcall no vb.net e dessa forma estamos utilzando mais não obtemos resposta da dll.

No caso o ACBrLib é uma dll se você já consumiu dll no VB.Net segue o mesmo fluxo e como notado não tem diferença então se seguir um dos exemplos ele necessariamente tem que funcionar no seu VB.Net.

já haviam utilizado dll no VB.Net?

trocou de stdcall para cdescl?

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

Link to comment
Share on other sites

  • Membros Pro

á haviam utilizado dll no VB.Net?

  - sim, consumimos outras dll nesse mesmo modulo, dll de balanças, dll tef e sem problemas, a mesma metodologia esta sendo aplicada na dll de vcs, nada de diferente.

trocou de stdcall para cdescl?

  - sim, já tentamos das duas formas. segue abaixo um trecho do código, e já respondendo com relação a compilação estamos usando de acordo com SO x DLL 32 ou 64 bits

 

<DllImport("C:\NATALSys\Retaguarda\ACBr\DLLs\x64\ACBrNFE64.dll", CallingConvention:=CallingConvention.Cdecl)>

Public Shared Function NFE_Nome(ByVal buffer As String, ByRef bufferLen As Long) As IntPtr End Function <DllImport("C:\NATALSys\Retaguarda\ACBr\DLLs\x64\ACBrNFE64.dll", CallingConvention:=CallingConvention.Cdecl)>

Public Shared Function NFE_Versao(ByVal buffer As String, ByRef bufferLen As Long) As IntPtr End Function
 
e estamos por exemplo tentando pegar a versão da dll
retorno = NSysNFe.ACBrNFeCdecl.NFE_Versao(vVersao, bufferLen)

Dim strResposta As String = Marshal.PtrToStringAnsi(retorno)
mais sempre a resposta é vazia

Link to comment
Share on other sites

  • Consultores

Bom dia @JCarmo

Os demos disponibilizados são em C# e VB6 realmente, e alguns outros que foram contribuições do pessoal que usa em outras linguagens. Em VB.Net tem alguns tópicos de relatos do pessoal que já usa, aparentemente conseguiram referenciar as classes de alto nível do ACBr compilando em C# e referenciando a dll no VB.net. De uma olhada abaixo.

 

Após isso, vamos por partes...
1- Está conseguindo rodar e utilizar as funcionalidades da NFe no Demo em C#? O primeiro passo que indicamos é dar uma estudada no demo e conseguir executar a emissão, pois esses demos já funcionam 100% a partir dai fica mais fácil o entendimento para uso na sua aplicação...

2- Notei que está utilizando a ACBrNFE64.dll, mas está compilando sua aplicação em x64? Se a aplicação for x86 deve utilizar ACBrNFE32.dll independente do sistema operacional.

3- Com o demo C# veja como é realizado a leitura das configurações na lib (botão: Carregar Configurações) é a mesma funcionalidade que vai utilizar para obter a versão que também fica no arquivo de configurações da lib.

4- A partir do momento que é instanciada a ACBrLibNFe é gerado um log de todos os métodos recepcionados e o seu retorno, o path desse log fica no arquivo de configuração da lib (ACBrLib.ini) junto ao executável. Se a lib já estiver sendo instanciada corretamente anexe esse log gerado para que possamos analisar os retornos.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

  • Membros Pro

Olá, agora saiu um norte.

1- Está conseguindo rodar e utilizar as funcionalidades da NFe no Demo em C#? O primeiro passo que indicamos é dar uma estudada no demo e conseguir executar a emissão, pois esses demos já funcionam 100% a partir dai fica mais fácil o entendimento para uso na sua aplicação...

     - Sim, compilei e apontei para meu ini e deu certo.

2- Notei que está utilizando a ACBrNFE64.dll, mas está compilando sua aplicação em x64? Se a aplicação for x86 deve utilizar ACBrNFE32.dll independente do sistema operacional.

      - sim, sabemos disso, penas coloquei como exemplo e estava usando o modelo do vb6 com stdcall, como usamos em várias dlls que usamos nesse modulo de PDV.

3- Com o demo C# veja como é realizado a leitura das configurações na lib (botão: Carregar Configurações) é a mesma funcionalidade que vai utilizar para obter a versão que também fica no arquivo de configurações da lib.

     - dei uma verificada e agora podemos entender, não é consumir igual as demais dll, mais entendemos, e um dos post que vc colocou tem uma explicação que acredito em resolver a situação, já faz mais ou menos uns 15 dias que tentamos em outros post esse entendimento da dll de vcs, mais acredito que dar para fazer baseado nos acbrlib_core.dll e acbrlib_nfe.dll, a minha pergunta é se posso utilizar ela mesmo sendo uma demo, se vai funcionar em produção ?  Já tinhamos feito toda a adaptação pelo nuget mais qd tentei colocar em produção fiquei sabendo do não suporte de vcs pelo nuget, e perdemos bastante tempo aqui.

4- A partir do momento que é instanciada a ACBrLibNFe é gerado um log de todos os métodos recepcionados e o seu retorno, o path desse log fica no arquivo de configuração da lib (ACBrLib.ini) junto ao executável. Se a lib já estiver sendo instanciada corretamente anexe esse log gerado para que possamos analisar os retornos.

    - faremos isso.

Link to comment
Share on other sites

  • Consultores
  • Solution
2 horas atrás, JCarmo disse:

mais acredito que dar para fazer baseado nos acbrlib_core.dll e acbrlib_nfe.dll, a minha pergunta é se posso utilizar ela mesmo sendo uma demo, se vai funcionar em produção ? 

Essas dependências são geradas a partir do projeto ACBrLibCore que contempla as funcionalidades comuns entre todas as libs e do projeto ACBrLib.NFe que chamamos de Classe Alto Nível, onde já tem os métodos implementados para fazer os Imports da ACBrLibNFe.dll, então acredito que pode ser usada essas dependencias sim.

O demo C# faz uso desses dois projetos, em tela note que só faz a chamada para instanciar a dll e as chamadas dos métodos a partir do  projeto ACBrLibNFe. 

O conceito da ACBrLib é diferente do que o pessoal está acostumado com C# fazendo apenas a referencia da dll do projeto, nesse caso precisa instanciar e fazer os imports, mas a classe ACBrLibNFe já faz isso.

Utilizando as dependencias de acbrlib_core.dll e acbrlib_nfe.dll só precisa copiar a ACBrLibNFe.dll e as libs de dependencia do ACBr na mesma pasta.

Consultor SAC ACBr

José Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.