Incompatibilidade de DLL

Boa tarde pessoal.
Estou integrando uma balança no meu sistema mas sempre que tento carregar a DLL ele me retorna o seguinte erro: ( java.lang.UnsatisfiedLinkError: Unable to load library ‘P05’ )

Entrei em contato com o fabricante da balança e o suporte técnico me disse que a DLL de comunicação só é feita para arquitetura 32bits.
Tem alguma opção em java ou no próprio SO que eu consiga carregar está DLL na arquitetura 64bits?

já tentei, mas dll 32 so podem ser carregadas pela vm 32.
se alguém sabe como fazer sou todo ouvidos.
fiz um servidor websocket rodando em uma vm 32 para atender requisição da minha aplicação que roda em uma vm64.(mas hoje, tempos depois não vejo uma real necessidade ter minha app em uma vm 64)

então lhe faço a mesma pergunta, porque você pode rodar um uma VM32?

Indo pelas respostas aqui e aqui, não parece ser possível mesmo. E isso não é uma limitação só do Java, aparentemente.

Uma opção é você criar uma miniaplicação 32 bits que carregue essa dll e provenha serviços à sua aplicação (através de troca de mensagens, sockets, arquivos temporários, etc). Provavelmente essa aplicação não poderá ser em Java, para você não ter dor de cabeça ao tentar manter 2 versões da jvm instaladas. Uma aplicação desktop simples, algo em C ou Pascal, deve ser suficiente.

O ideal mesmo seria o fabricante fornecer uma versão 64 bits da dll. Me surpreende ele não ter essa preocupação.

Abraços.

1 curtida

Certo Lazaru, muito obrigado pela resposta.

Creio que você usa JAVA WEB por isso realmente não existe a necessidade de ter uma VM64.

Porem no meu caso eu trabalho com JAVA DESKTOP e como tenho um sistema ERP e não sei qual a arquitetura do computador que vai ser instalado eu preciso criar ele de uma maneira dinâmica que ira funcionar tanto na 32 quanto no 64bits, por isso a necessidade de abrir essa DLL de 32 em uma máquina 64bits.

bom tbm uso java desktop, vc pode olhar qual a versao do sistema operacional e carregar a dll correta sendo ela 32 ou 64 bit. caso o fornecedor não possua uma versão para cada sistema operacional ai vc teria que fazer como o TerraSkill disse. no meu caso fiz qualse igual ele disse…
mantenho duas vm privadas em pastas separadas e o sistema conversa via websocket mas poderia ser socket tbm.

desculpa a demora, para você carregar uma dll 32 precisa de uma vm32, para carregar uma dll64 precisa de uma vm64. isso deve estar claro.

se vc aceitou o texto acima podemos ir para o próximo passo que seria o que fazer para resolver:(Não estou sendo arrogante, desculpe se parecer. e que não achei outra solução para isso)

colocar uma vm embarcada para seu aplicativo desktop, assim vc poderia instalar ele em qualquer computador que ele usaria uma vm privada. assim vc teria que escolher uma arquitetura 32 ou 64 de acordo com suas dlls.

explicando melhor minha ultima resposta:
o que eu fiz foi levantar um servidor websocket em uma aplicação desktop onde o servidor com uma vm embarcada 32 bits para dlls que não tinham versao 64, assim quando era para usar a dll 32 eu chamava o metodos do servidor.(ja abandonei essa ideia, hj uso uma vm32 para todo, claro que embarcado)