Foros del Web » Programación para mayores de 30 ;) » Java »

DLLs con java

Estas en el tema de DLLs con java en el foro de Java en Foros del Web. Amigos: En mi empresa quiero hacer un desarrollo para integrar una dll que nos suministra el distribuidor de la planta telefonica, la cual permite manejar ...
  #1 (permalink)  
Antiguo 27/08/2005, 11:45
 
Fecha de Ingreso: febrero-2004
Ubicación: Bogotá, Colombia
Mensajes: 191
Antigüedad: 20 años, 2 meses
Puntos: 1
DLLs con java

Amigos:

En mi empresa quiero hacer un desarrollo para integrar una dll que nos suministra el distribuidor de la planta telefonica, la cual permite manejar todos los eventos que se llevan a acabo en ella, y JAVA. Pero nunca he manejado dlls con java
Alguien sabe donde puedo conseguir info acerca del manejo de estas ???
  #2 (permalink)  
Antiguo 29/08/2005, 07:51
Avatar de Ani Alamo  
Fecha de Ingreso: julio-2005
Mensajes: 35
Antigüedad: 18 años, 9 meses
Puntos: 1
Usa JNI

Para trabajar con fuentes externas, tales como las DLLs de un propietario debes tomar en cuenta lo siguiente, si por ejemplo la DLL fue hecha en C:

1. Así como recibes el fichero DLLExtern.dll, deberás recibir un fichero DLLExterna.h, donde verás los métodos externos que pueden ser usados por aplicaciones externas, por ejemplo:


extern int YMCKO(char *FileName, int ColorSmooth, int BlackMode);



2. Debes crear una DLL llamada "Test.dll" , una DLL intermedia que invoque a dicha DLL de propietario, pera esta nueva DLL debes crearla usando JNI, de la siguiente manera:

Código PHP:

// Test.cpp : Defines the entry point for the DLLExtern application.

#include "stdafx.h"
#include "stdio.h"
#include "jni.h"
#include "jni_md.h"
#include "DLLExtern.h"


JNIEXPORT jint JNICALL Java_myPackage_Test_YMCKO
 
(JNIEnv envjobject interpObjjstring jFileName,
  
jint jColorSmoothjint jBlackOption)
{
    const 
char *sFile env->GetStringUTFChars(jFileName0);    
    
char FileName[100];
    
strcpy(FileName,(char*)sFile);
    
returnValue YMCKO(FileName (int)jColorSmooth, (int)jBlackOption);
    return 
returnValue;


3. Creas una clase Java que invoque a los métodos nativos de tu DLL intermedia...

Código PHP:
package myPackage;
import java.io.*;
public class 
Test
{
  
// Native Methods 
  
public native int YMCKO(String FileNameint ColorSmoothint BlackOption);
  public 
Test() {}

  
// Main 
  
public static void main(String[] args
  {
    try {
      
int retorno test.YMCKO("c:\\Densite1.bmp"00);
    } catch (
Exception ex) {
      
System.err.println(ex.getMessage());
    }
  }
  static {
      
System.loadLibrary("Test");
  }

Y al compilar esta clase (Activando la Configuración del Compilador JNI - ACTIVANDO la opción de "Generar archivo de cabecera JNI")....
te genera un fichero .h... el cual debes incluirlo en tu código C.... como el mismo fichero DLLwithJNI.h... la cabecera ".h" generada tiene la siguiente forma:


Código PHP:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class myPackage_Test */

#ifndef _Included_myPackage_Test
#define _Included_myPackage_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     myPackage_Test
 * Method:  YMCKO
 */
JNIEXPORT jint JNICALL Java_myPackage_Test_YMCKO
  
(JNIEnv *, jobjectjstringjintjint);

#ifdef __cplusplus
}
#endif
#endif 
4. Entonces compilas tu DLL intermedia (la que usa JNI), y finalmente, la dejas en el System de tu Windows..... y listo a ejecutar tu aplicación.


5. Para más información revisa esta URL:
http://java.sun.com/docs/books/tutorial/native1.1

Un saludo.
__________________

Ani Alamo Gómez de González


"Sin Dios no soy nada en este mundo, sin El nada puedo ser... ni las hojas de los árboles se mueven, sino es por su gran poder. Bendito seas Señor."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:34.