Ir para conteúdo
  • Cadastre-se

dev botao

ACBr.PDV dando Exception com erro inesperado com LIBs MT.


OFF-DEV
  • Este tópico foi criado há 1195 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

 

Prezados,

 

Baixei o ACBr.PDV criado pelo Rafael pelo SVN, ao tentar executá-lo pelo VS2019 ocorre um ApplicationException na função CheckResult(int ret)  de um retorno não tratado :  mensagem 5.

O Stack é esse:

>    ACBrLib.Core.dll!ACBrLib.Core.ACBrLibHandle.CheckResult(int ret) Line 401    C#
     ACBrLib.NFe.dll!ACBrLib.NFe.ACBrNFe.ConfigGravarValor(ACBrLib.Core.ACBrSessao eSessao, string eChave, object value) Line 256    C#
     ACBr.PDV.exe!ACBr.PDV.CaixaPDV.CaixaPDV() Line 51    C#
     ACBr.PDV.exe!ACBr.PDV.FrmMain.FrmMain_Shown(object sender, System.EventArgs e) Line 50    C#
     [External Code]    
     ACBr.PDV.exe!ACBr.PDV.Program.Main() Line 19    C#


 

OBS1: Como baixei e rodei, aparentemente está rodando as libs MT como padrão, dando este erro.  

OBS2: Retirando as bibliotecas MT e colocando as Single Thread, funciona sem problemas.

OBS3: Baixei as ultimas versões das DLLs MT do SAT e atualizei, porém o erro continua.

 

 

Alguém sabe como resolver isso?

 

Desde já agradeço

Leandro S.

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Veja essa palestra que o @Rafael Dias deu no Dia do ACBr Online 2020.

Para utilizar Libs MT sugiro você dar uma olhada nos demos ACBr em C#. Veja nas declarações da funções da lib no demo MT que tem um parâmetro a mais.
http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/C%23/

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Prezado Antonio, obrigado por postar,

 

Sim, assisti estes vídeos algumas vezes já, e foi através dele que cheguei no svn do ACBr.PDV do Rafael, meu problema é que ao tentar executar o demo, ele não funciona pois vem já preparado só para MT, disparando o erro citado no checkresult.

 

No vídeo não explica como resolver o problema do demo dele usando MT, ou se quer como minimamente preparar-se para rodar o ACBr.PDV com MT, apesar de está referenciado com estas libs...  OU não era para rodar corretamente com MT mesmo?

 

Vlw

Link para o comentário
Compartilhar em outros sites

  • Consultores

@OFF-DEV
Acabei de fazer um teste com o Demo ACBr.PDV.
image.png

Não houve nenhum erro conforme você relatou acima, veja que a estrutura das pasta dentro do .exe do Demo.
Dentro da pasta ACBrLib criei outra pasta x64 para utilizar as libs versão 64 com suporte a MultiThread.
image.png
Essas 4 dll são necessárias para utilizar o Demo ACBr.PDV.
Veja também que o Demo depende do ACBrLib.Core:
image.png
O mesmo esta disponivel no SVN a pasta /Shared.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

 

Coloquei exatamente como você colocou em ACBrLib/x64 as mesmas bibliotecas.  E deu o mesmo erro que citei lá em cima.

Ao que parece não é problema em carregar as DLLs, elas estão sendo encontradas corretamente como antes.

 o problema é o retorno deste método abaixo que é -3.  

        public void ConfigGravarValor(ACBrSessao eSessao, string eChave, object value)
        {
            if (value == null) return;

            var method = GetMethod<Delegates.NFE_ConfigGravarValor>();
            var propValue = ConvertValue(value);

            var ret = ExecuteMethod(() => method(libHandle, ToUTF8(eSessao.ToString()), ToUTF8(eChave), ToUTF8(propValue)));
            CheckResult(ret);
        }

Se ele não tivesse encontrando o método na DLL, o exception seria de outro tipo, mas não é isso?....

 

 

 

CheckResult não trata ret=-3, apenas manda um exception pra cima ....

        protected void CheckResult(int ret)
        {
            if (ret >= 0) return;

            var message = GetUltimoRetorno();

            switch (ret)
            {
                case -6:
                    throw new DirectoryNotFoundException(message);

                case -5:
                    throw new FileNotFoundException(message);

                default:
                    throw new ApplicationException(message);
            }
        }

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

 

 

Em debug aqui, na inicialização da DLL  já ocorre um InternalError como pode ser visualizado.  O diretório x64 está lá com as DLLs.    

 

 

image.thumb.png.cf7d85ca38aace1c4119b99cb6f6b2b9.png

O que eu fiz:

1-voltei a copia origianl

2-joguei as DLLs em ACBrLib/x64

3-Executei

 

 

 

Tem alguma coisa aqui que está impedindo o carregamento......

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
8 minutos atrás, Rafael Dias disse:

Infelizmente você deve estar copiando a dll errada ou modificou o projeto de alguma maneira, pois não conseguimos simular o erro aqui, recomendo apagar tudo e começar do começo novamente e conferir se esta tudo correto.

Obrigado Rafael,

Realmente algum problema de DLLs Hell aqui, eu baixei tudo novamente da página do acbr e descompactei uma a uma e atualizei o diretório x64 novamente, agora está funcionando, entrou na tela inicial e não apresentou -3.

Muito obrigado Rafael e Antônio! 

 

Abraços..

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1195 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.