Consultores Diego Foliene Postado 10 Janeiro Consultores Postado 10 Janeiro Olá pessoal! Se você caiu neste tópico, supomos que você já conheça a ACBrLib e esteja tentando utilizar a mesma. Se este não é o caso, você pode começar por aqui: Muito bem, agora que todos sabem o que é a ACBrLib, vamos ao propósito do tópico que é ajudar aqueles que podem estar enfrentando problemas de inicialização ao utilizar o ACBrLib. Para efeito de demonstração, vamos considerar o exemplo disponível em C# para NF-e, no entanto, os conceitos podem ser aplicados independente da linguagem de programação. Possíveis erros: Não foi possível carregar a biblioteca na pasta da aplicação ou caminho padrão. System.Exception: "" Uma chamada para a função PInvoke desbalanceou a pilha. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Consultores Diego Foliene Postado Quinta as 14:54 Autor Consultores Postado Quinta as 14:54 Erro: Não foi possível carregar a biblioteca na pasta da aplicação ou caminho padrão. Possível causa do problema: Talvez um dos erros mais comuns de quem está tentando utilizar a ACBrLib pela primeira vez. Este erro ocorre porque a aplicação não conseguiu encontrar a dll ACBrLibNFe no local que esperava encontrar. Como resolver: Quando se trabalha com a ACBrLib, é necessário distribuir a mesma junto de sua aplicação para correta comunicação e uso. As classes do ACBr para os exemplos do C#, do Java, do VB6 por padrão buscam ela em um caminho seguindo a estrutura ..\ACBrLib\x86 ou ..\ACBrLib\x64 dependendo da arquitetura da aplicação. Então em nosso exemplo C# da NF-e eu devo adicionar as pastas e a dll na estrutura de forma que fique: Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Consultores Diego Foliene Postado Quinta as 20:32 Autor Consultores Postado Quinta as 20:32 Erro: System.Exception: "" `Possível causa do problema: As bibliotecas ACBrLib são distribuídas em versões Single Thread e Multi Thread. Também são disponibilizados exemplos Single Thread e Multi Thread para consumir essas respectivas bibliotecas. Este erro pode acontecer quando você utiliza a versão Multi Thread da ACBrLib com o exemplo Single Thread. Como resolver: Os exemplos Single Thread e Multi Thread são identificados no nome. Single Thread Multi Thread Quando você faz o download da biblioteca ACBrLib, a mesma vem dentro da pasta dep conforme a estrutura: Se estiver utilizando o exemplo Single Thread certifique-se de ter distribuído a Lib Single Thread e caso esteja utilizando o exemplo Multi Thread, tenha certeza de estar usando a Lib Multi Thread. Possível causa do problema: Quando você executa a ACBrLib, ela automaticamente cria para você um arquivo ACBrLib.ini que centraliza todas as configurações da biblioteca. Este erro também pode ocorrer caso o arquivo ACBrLib.ini está com alguma configuração inválida. Como resolver: Será preciso realizar um pequeno processo para buscar entender qual é a seção e qual é a configuração da mesma que está com o valor inválido. Renomeie seu arquivo ACBrLib.ini que centraliza as configurações da biblioteca para que ele fique de backup. Pode chamar de ACBrLibBKP.ini por exemplo. Execute novamente a aplicação para que um novo arquivo ACBrLib.ini em branco seja criado. Substitua uma seção do arquivo em branco pela seção do arquivo backup, execute a aplicação, caso não dê erro, pare a execução, substitua uma nova seção e execute novamente. Execute o passo 3 gradativamente até que volte a ter o problema de inicialização. Assim, você pode descobrir qual é a seção do arquivo ACBrLib.ini que está com a informação inválida repita novamente o passo a passo agora alterando somente as informações desta seção até encontrar qual é a informação que tem o valor inválido. Como identificar por qual das duas possibilidades eu estou passando? O arquivo de Log gerado pela ACBrLib pode ajudar com esta questão. Este é o log no nível paranoico gerado pela Lib com a dll MT no exemplo ST: Quote 16/01/25 17:23:21:660 - TLibNFeConfig.AplicarConfiguracoes: C:\ACBr\trunk2\Projetos\ACBrLib\Demos\C#\NFe\Demo\ACBrLib.NFe.Demo\bin\Debug\ACBrLib.ini 16/01/25 17:23:21:663 - Travar 16/01/25 17:23:21:666 - Travar 16/01/25 17:23:21:669 - TLibNFeConfig.Gravar: C:\ACBr\trunk2\Projetos\ACBrLib\Demos\C#\NFe\Demo\ACBrLib.NFe.Demo\bin\Debug\ACBrLib.ini 16/01/25 17:23:21:685 - TLibNFeConfig.Gravar - Feito 16/01/25 17:23:21:686 - Destravar 16/01/25 17:23:21:689 - TLibNFeConfig.AplicarConfiguracoes - Feito 16/01/25 17:23:21:691 - Destravar 16/01/25 17:23:21:694 - TLibNFeConfig.Ler - Feito 16/01/25 17:23:21:696 - Destravar 16/01/25 17:23:21:698 - TACBrLibNFe.Inicializar - Feito 16/01/25 17:23:21:702 - LIB_Inicializar( C:\ACBr\trunk2\Projetos\ACBrLib\Demos\C#\NFe\Demo\ACBrLib.NFe.Demo\bin\Debug\ACBrLib.ini, **** ) 16/01/25 17:23:21:704 - ACBrLibNFE - 1.4.7.328 Este é o log no nível paranoico gerado pela Lib com uma informação inválida no arquivo ACBrLib.ini: Quote 16/01/25 17:24:54:261 - TLibNFeConfig.AplicarConfiguracoes: C:\ACBr\trunk2\Projetos\ACBrLib\Demos\C#\NFe\Demo\ACBrLib.NFe.Demo\bin\Debug\ACBrLib.ini 16/01/25 17:24:54:265 - Travar 16/01/25 17:24:54:268 - Destravar 16/01/25 17:24:54:271 - TLibNFeConfig.Ler - Feito 16/01/25 17:24:54:273 - Destravar 16/01/25 17:24:54:276 - TACBrLib.Destroy 16/01/25 17:24:54:279 - Finalizar Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Consultores Diego Foliene Postado Quinta as 20:52 Autor Consultores Postado Quinta as 20:52 Erro: Uma chamada para a função PInvoke desbalanceou a pilha. Possível causa do problema: As bibliotecas ACBrLib além de versões Single Thread e Multi Thread também são compiladas considerando a convenção de chamada da linguagem que vai utiliza-lá. Está convenções de chamada são StdCall e Cdecl. Este erro ocorre quando você está utilizando uma ACBrLib com a convenção de chamada diferente das utilizadas pelas classes. Como resolver: Quando você faz o download da ACBrLib, você vai encontrar as convenções de chamada diferentes: Por padrão, os exemplos do C#, Java e VB6 fazem uso da convenção Cdecl: Certifique-se de que esteja utilizando a dll da convenção de chamada correta. Neste exemplo eu devo utilizar a Cdecl ou alterar na classe para que use StdCall como convenção de chamada para que possa usar a dll correspondente. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Discord Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!
Recommended Posts