Conecte Java de 64 bits com dll COM de 32 bits usando Com4j ou Jacob
Eu tenho a seguinte configuração:
1) Windows 10 de 64 bits
2) Um aplicativo que possui apenas uma versão de 32 bits e está disponível no COM.
Acesso o arquivo .dll do aplicativo de 32 bits usando o tlbimb.jar para gerar as interfaces necessárias e obtive sucesso.
Cenário 1: tento acessar o aplicativo de 32 bits usando o Java 832 bits instalação. Eu posso invocar os métodos através do COMcom sucesso sem qualquer problema.
Cenário 2: tento acessar o aplicativo de 32 bits usando uma instalação do Java 8 de 64 bits. Recebo uma mensagem de erro:
Exception in thread "main" com4j.ExecutionException: com4j.ComException: 80040154 CoCreateInstance failed : Class not registered : .\com4j.cpp:153
Pesquisei a exceção no Stackoverflow / Google e fiz o seguinte:
1) Registrou a dll do aplicativo usando o Sys64WOW / regsvr32.exe e o System32 / regsvr32.exe
2) Registrou a dll com4j (32 e 64 bits) usando o Sys64WOW / regsvr32.exe e o System32 / regsvr32.exe
3) Copiou as DLLs nas pastas Sys64WOW e System32.
Eu fiz todas as etapas acima separadamente, verificando todas as combinações possíveis. O erro mencionado acima usando Java de 64 bits ainda existe.
Eu tentei usar outra ponte (Jacob). No Java de 32 bits, ele é bem-sucedido; no Java de 64 bits, ele falha.
Tenho uma pergunta para alguém que possa saber: existe alguma maneira de conectar um aplicativo que, até onde sei, oferece apenas umaDLL de Win32 COM[1], usando qualquer uma das pontes Java / COM disponíveis eJava 64bit? Ou simplesmente o Java COM + 64 bits de 32 bits não é conectável?
[1]: verifiquei o visualizador OLE / COM e, na biblioteca de tipos, existe apenas uma entrada "0 Win32 =, então sugeri que isso significa que não há dll Win64 COM, certo?