Java - Llamar a los metods de una dll en .net desde java

   
Vista:

Llamar a los metods de una dll en .net desde java

Publicado por Serafin (5 intervenciones) el 13/09/2007 12:36:47
Espero que me podáis ayudar.

Lo dicho, necesito poder llamar a una dll hecha en .net desde código java.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llamar a los metods de una dll en .net desde ja

Publicado por angel (537 intervenciones) el 13/09/2007 13:37:45
A eso se llama invocar codigo nativo. PAra eso se usa el JNI.
Buscando en google "java invocar codigo nativo" seguro que aparecen ejemplos, y si lo haces en ingles, seguro que aparecen muchos mas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llamar a los metods de una dll en .net desde ja

Publicado por Serafin (5 intervenciones) el 13/09/2007 16:00:52
Lo estaba viendo, pero todos me hacen referencia a C o C+... no habla de .net
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llamar a los metods de una dll en .net desde ja

Publicado por Clayder (24 intervenciones) el 13/09/2007 23:41:42
Hola:

Bueno, no se como será en .NET pero no debe haber mucha diferencia -pienso yo- ya que tambien genera codigo nativo, esta diferencia se daria al momento de incluir las cabeceras, ya que en C/C++ es #include. En resumen tendrias que incluir algunas cabeceras en tu codigo de .NET y compilarlas poniendo la ruta de estas. Por ejemplo:

Creas tu fichero .java y lo compilas normal:

class HolaMundo
{
private native void imprimir();

public static void main(String[] args)
{
new HolaMundo().imprimir();
}

static
{
System.loadLibrary("Hola");
}
}

Luego tienes que crear la cabecera para ese .class, haciendo:

javah -jni HolaMundo

Y finalmente la implementacion del codigo nativo(aquí si puede variar ya que esto esta en C)

#include <jni.h>
#include <stdio.h>
#include "HolaMundo.h"

JNIEXPORT void JNICALL
Java_HolaMundo_imprimir(JNIEnv *env, jobject obj)
{
printf("Hola Mundo!\n");
}

La idea aqui es que incluyas las cabeceras jni y la creada por el "javah" anterior, y claro el "JNIEXPORT void JNICALL". En la declaracion de la funcion debe ir Java_"NombreClase"_"MetodoNativo"(...), donde "NombreClase" debe ser la misma de tu clase hecha en codigo java y "MetodoNativo", el mismo nombre que le pusiste al metodo nativo en el codigo java(native void imprimir()). Eso seria casi todo.

Ahora al momento de crear la dll, tienes que darle la ruta del "jni.h", la cuales estan en el jdk: "C:\Archivos de programa\Java\jdk1.6.0\include" y "C:\Archivos de programa\Java\jdk1.6.0\include\win32", bueno dos rutas ya que la cabecera jni.h depende de otras que se encuentran dentro de la 2da ruta. Estas rutas tienes que pasarselas al compilador al momento de crear la dll y ya depende de los parametros que tenga el compilador(en este caso de .NET).

Ahora si, ejecutas el .class como cualquier codigo java y deberia imprimir:

HolaMundo!

Espero haberte ayudado.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar