Re: ***SPAM*** Re: Llamadas a librer ías C desde aplicación Java

Sebastian Gurin <sgurin-nLx/x0uvtyR/[email protected]>
Newsgroups gmane.comp.java.javaspain
Organization softpoint
Message-ID <[email protected]>
Me has entendido mal. 

tu tienes una dll (objeto binario) que expone cierta funcionalidad. Java te permite definir métodos nativos utilizando C++ con jni (busca en google jni tutorial)

tu problema es muy comun: quieres invocar una dll pero no existen mapeo directo de tipos java a los aceptados por la dll.

Lo que suele hacerse en estos casos es, construir con jni un método nativo y dado que la implementación de dicho método (el cuerpo del mensaje) la vas a escribir en C++, desde allí puedes referenciar y llamar a la dll tranquilamente.

espero se halla entendido.

On Fri, 29 Aug 2008 14:13:33 +0200
"Daniel B" <[email protected]> wrote:

> Creo que no es viable el hacer nuestra propia clase C que haga de puente por
> diferentes motivos (tiempo, recursos con conocimientos suficientes...)
> 
> Si no existe otra posibilidad tendremos que buscar otras soluciones que no
> incluyan las librerías C.
> 
> Muchas gracias por todo. Si se os ocurre algo más, estaré atento a las
> ideas.
> 
> El 26 de agosto de 2008 15:04, Sebastian Gurin
> <sgurin-nLx/x0uvtyR/[email protected]>escribió:
> 
> >   On Tue, 26 Aug 2008 13:42:30 +0200
> >
> > "Daniel B" <[email protected] <forosenlared%40gmail.com>> wrote:
> >
> > > Gracias por la ayuda, pero entiendo bien cómo hacer un sencillo ejemplo.
> > Mi
> > > pregunta es si se pueden implementar métodos nativos que reciban y/o
> > > devuelvan tipos no comunes a ambos lenguajes. El ejemplo que me envías se
> > > limita a escribir por consola, sin parámetros ni nada complejo.
> > >
> > > Parto de la idea de que no tengo prácticamente idea de C, pero intentaré
> > > explicarme mejor. Si una función de una librería DLL recibe como
> > parámetro
> > > un Objeto o Tipo que no existe en Java y devuelve un Objeto o Tipo que
> > > tampoco existe, ¿hay forma de hacer la llamada a esa función desde Java?
> > ¿o
> > > sólo es posible llamar a funciones que usen "int", "boolean", "String",
> > etc?
> >
> > en ese caso, la idea es que tu realices, del lado de C, una función que
> > aceptando tipos soportados por jndi (char, string, double, integer, etc),
> > llame a la función de la dll que recibe tipos de parámetros no soportados...
> >
> >
> > >
> > > Gracias de nuevo.
> > >
> > > El 26 de agosto de 2008 12:49, Carlos Nicolás <[email protected]<hogar68%40yahoo.es>>
> > escribió:
> > >
> > > > --- On Tue, 26/8/08, Daniel B <[email protected]<forosenlared%40gmail.com>>
> > wrote:
> > > > From: Daniel B <[email protected] <forosenlared%40gmail.com>>
> > > > Subject: [javaSpain] Llamadas a librerías C desde aplicación Java
> > > > To: [email protected] <javaSpain%40yahoogroups.com>
> > > > Date: Tuesday, 26 August, 2008, 12:14 PM
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Buenos días
> > > >
> > > > Desde una aplicación Java tengo que utilizar unas librerías creadas en
> > C de
> > > > otra aplicación de servidor. Llevo varios días mirando las
> > posibilidades de
> > > > hacer esto y me encuentro con las siguientes opciones:
> > > >
> > > >
> > > > 1. JNI. Por los ejemplos que he visto parece que es fácil de
> > implementar
> > > > pero tiene un problema: sólo veo que admita tipos de datos comunes a
> > los dos
> > > > lenguajes (tipos primitivos, String, Array) y las funciones C que debo
> > usar
> > > > tienen sus propias clases como argumentos de las mismas y como tipos
> > > > devueltos.
> > > >
> > > >
> > > > 2. JNDI. He mirado algo pero parece un mundo y no sé si realmente es lo
> > que
> > > > necesito.
> > > >
> > > > 3. CORBA. Idem punto 2.
> > > >
> > > > ¿Podéis decirme como ataco este problema? ¿Es posible lo que quiero
> > hacer?
> > > > Ya os adelanto que implementar las librerías C en lenguaje Java no es
> > una
> > > > opción. Si debo optar por una de esas 3 opciones, os agradecería que me
> > > > indicárais un buen manual o lugar de referencia.
> > > >
> > > >
> > > > Te mando un pequeño ejemplo usando JNI
> > > >
> > > > http://www.inonit.com/cygwin/jni/helloWorld/
> > > >
> > > > Gracias por vuestra colaboración,
> > > > Daniel
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > Send instant messages to your online friends
> > http://uk.messenger.yahoo.com
> > > >
> > > >
> > >
> >
> > --
> > Sebastian Gurin <sgurin-nLx/x0uvtyR/[email protected] <sgurin%40montevideo.com.uy>>
> >  
> >
> 


-- 
Sebastian Gurin <sgurin-nLx/x0uvtyR/[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.