Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Boa tarde.

 

Devido a uma necessidade em particular de uma aplicação, foi necessário fazer uma modificação na libeay32.pas que carrega as dlls do OpenSSL para evitar as mesmas fossem carregadas em memória logo no inicio da aplicação e sim quando forem realmente necessárias.

Problema: A aplicação que usa a AcBr é quem extrai todos os arquivos necessários para execução. Mas como o carregamento das dlls openssl (libeay32.dll, ssleay32.dll, e por tabela msvcr100.dll/120.dll dependendo da versão do open ssl) é executada antes da execução dos unit initializers* o executável nunca viria a carregar pela, ainda ,inexistencia da dlls fisicamente no diretório.

* codigo "initialization" de uma unit, que é onde , no caso, se extrai os arquivos.

Solução: Utilizando de uma feature ("delayed") que foi inserida no Delphi 2010 que faz o carregamento atrasado das dependências externas.

 

Segue em anexo a unit com a modificação sugerida.

libeay32.pas

  • Curtir 1
  • Consultores
Postado

Então no delphi 2010 pra cima iria funcionar e no restante?

esquecemos deles?

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
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 !!

Postado (editado)

Continua funcionando como ja estava funcionando antes.

Só que infelizmente não carregando por demanda como no caso de ser compilada em Delphi 2010 pra cima. Ou seja, não ha quebra de compatibilidade e sim melhoria.

Veja que a existe um check de versão por diretiva de compilação no código que só utiliza a feature se for num compilador com suporte, caso contrario compila como estava anteriormente sem nenhuma modificação a mais. Só trocar o .pas e reinstalar (recompilando) a acbr.

Editado por Valdecir Luciano Carvalho
  • Consultores
Postado

Então.. tenho um projeto em XE6 e essa implementação só gerou dor de cabeça!

pois o mesmo não funciona, recebi relatos após gerar o build que ele não consegue carregar a dll em questão!

então o que me dizem os especialistas no delay?

ps: não é dll faltando, nem colocada em local errado, muito menos conflito entre versões

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
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 !!

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.

The popup will be closed in 10 segundos...