Senhores, bom dia!
Estou tentando encontrar uma forma de converter arquivos .dll em 32-bit para 64-bit, estou pesquisando a respeito mas ainda não encontrei nenhum recurso confiável que faça esse processo.
A minha dúvida é, alguém de vocês já fez algo parecido para que possa me recomendar alguma ferramenta ou algo do tipo para realizar esse processo?
1 curtida
O correto seria você obter os fontes e recompilar para a nova plataforma.
Tem que ter em mente que no código nativo, a partir do momento que você altera a plataforma indo de 32 para 64 bits, a magnitude dos tipos inteiros também vai mudar.
O tipo int
na sua DLL de 32 bits, vai ocupar 32 bits, mas na DLL de 64 bits o int
ocupará 64 bits.
Se você tem um sistema Java que foi atualizado para 64 bits, mas você depende de DLLs que foram implementadas em 32 bits, minha dica é o seguinte:
- Cria uma interface para acessar as funções de sua DLL;
- Crie um aplicativo/serviço Java em 32 bits que implementa essa interface;
- No seu sistema 64 bits acesse esse aplicativo/serviço (via socket, RMI ou webServices, como achar melhor) para comunicar com a DLL.
Você vai ter duas instâncias do Java rodando, uma de 32 e outra de 64 bits.
(Bom mommento para estudar o conceito de module
e de repente criar uma aplicação contendo um JRE menor)
O Java de 64 bits consegue “trocar figurinhas” com um Java de 32 bits.
O que não funciona é um Java de 64 bits carregar DLLs de 32 bits e vice-versa.
Então utilizando essa construção você terá a garantia de que não haverá incompatibilidade de dados entre sua aplicação de 64 bits e a DLL de 32 bits.
O Java de 64 bits vai conversar com o Java de 32 bits que por sua vez consegue acessar a DLL de 32 bits numa boa…
Por motivos internos onde os fabricantes detentores das .dll’s não conseguiriam migrar suas .dll’s para 64-bit no prazo necessário para a entrega do projeto, fiz um downgrade da versão do Java utilizada no projeto passando do OpenJDK 11 64-bit para o Java 8 32-bit, dessa forma conseguimos manter a entrega dentro do prazo, apontando como uma melhoria técnica a evolução da versão do Java e .dll’s conforme os fabricantes disponibilizarem.
1 curtida