Tempo aproximado para leitura: 00:03:00 min
Ocorrência
É retornado erro ao utilizar as funções de manipulação de .DLL (ex: ExecInDLLOpen()).
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 12.1.23
Causa
Isto ocorre quando o sistema não consegue realizar a troca de informações corretamente, assim sendo gerado o retorno -1.
Solução
Validar se a .DLL corrompida ou divergente para a arquitetura da aplicação (SmartClient).
Exemplo
Em um SmartClient 64 bits (IsRmt64() == .T.) temos uma .DLL (Dynamic-Link Library) que retorna o código -1 em um remote x64, porém retorna 1 em remote x86.
Com base neste cenário, executaremos o comando FILE (presente em ambientes Linux ou aplicações que simulem o ambiente, neste caso, utilizamos o Git Bash) para validar a arquitetura:
$ file MINHA_BIBLIOTECA.dll
MINHA_BIBLIOTECA.dll: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
Como pode ser visto, esta .DLL foi desenvolvida com base na arquitetura x86 (80386), assim sendo, não será executada com sucesso em um ambiente x64. Desta forma, tornando necessária a recompilação com base na arquitetura x64.
Saiba mais
ExecInDLLOpen
1 Comentários