es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Envolviendo una DLL COM/DCOM con JNI.

Busqué durante casi 2 horas algún ejemplo con código completo, pero no pude encontrar nada que funcione. El problema es el siguiente: tengo una DLL COM de C++ que puede comunicarse con MSJava antiguo y necesito reemplazar el MSJava con Java de Sun/Oracle. Dado que MSJava no utiliza JNI, la DLL no está preparada para JNI. Planeo crear otra DLL de C++ que implemente JNI y desde allí llamar a la DLL antigua. ¿Es posible hacer esto? ¿Algún consejo? ¿Ejemplos? Gracias a todos. (Si esto es un duplicado, por favor envíenme el enlace del artículo)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para reemplazar MSJava con Sun/Oracle Java en un COM DLL de C++

    Como experto en tecnología de la información especializado en Java, C++, DLL, Java-Native-Interface (JNI) y DCOM, te has enfrentado a una pregunta desafiante sobre cómo reemplazar MSJava con Sun/Oracle Java en un COM DLL de C++. Luego de buscar durante casi 2 horas, no has encontrado ningún ejemplo con el código completo que funcione. Sin embargo, has ideado una solución que consiste en crear otro DLL de C++ que implementa el JNI y desde este llamar al viejo DLL.

    Para implementar esta solución, debes seguir los siguientes pasos:

    1. Crea un nuevo DLL de C++ que implemente el JNI.
    2. Compila el DLL de C++ utilizando el Java Development Kit (JDK) de Sun/Oracle en lugar de MSJava.
    3. Modifica el DLL de C++ COM existente para incluir un nuevo método que tome el objeto Java como parámetro.
    4. Llama al nuevo método desde el DLL de implementación del JNI, pasa el objeto Java como parámetro y maneja la comunicación entre los dos DLLs.

    No es una solución directa, pero es posible. Debes asegurarte de que ambos DLLs se compilen con el mismo compilador de C++ y que puedan comunicarse entre sí utilizando una interfaz de C++. También debes tener en cuenta cualquier diferencia entre MSJava y Sun/Oracle Java que pueda afectar la comunicación entre los dos DLLs.

    En cuanto a ejemplos, puedes consultar la documentación de Oracle sobre JNI, que proporciona información detallada sobre cómo crear y utilizar el JNI con C++. También puedes buscar tutoriales y código de muestra en línea, o consultar con otros expertos en el campo para recibir consejos.

    En conclusión, es posible reemplazar MSJava con Sun/Oracle Java en un COM DLL de C++ con la ayuda de la implementación de JNI. Siguiendo las pautas y mejores prácticas, puedes lograr una comunicación fluida entre los dos DLLs y cumplir con los requisitos de tu proyecto.

Comments are closed.