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]>