2010-12-27 15 views
5

Da quello che ho capito, SWIG è di avvolgere C++/C per farlo apparire in Java, e javah è di implementare alcune funzioni java in C++ (anche funzioni native).
C'è uno strumento che può creare un wrapper C++ su una classe java, in modo che il chiamante. di questa C++ wrapper non deve preoccuparsi di java, ad esempio
ingresso Java èstrumento per generare wrapper C++ su classe java

class hw { 
    public void hi() { 
     System.out.println("Hello World"); 
    } 
    } 

Strumenti uscite hw.hh (e un po '. C++ file), che può essere utilizzato come :

hw * h = nuovo hw (/ * JEnv */env);
h-> hi();

Esiste uno strumento che può eseguire questa operazione?

+0

Ti aspetti che questo wrapper ospiti una macchina virtuale java? Questo non è banale. –

+0

@Bgen Voigt: Da quello che ho letto, penso che sia un sacco di codice boilerplate .. può essere non banale, ma può essere fatto dallo strumento. Tutti gli strumenti esistenti sono orientati all'uso di java come framework, e il codice C++ come libreria .. stavo cercando di fare il contrario. Java come libraray, che C++ chiamerà come e quando necessario. .. Ho la sensazione che questo tipo di strumento possa essere fatto usando java reflection api! – vrdhn

risposta

4

Le opzioni includono, le seguenti, in ordine crescente di spesa.

  • Codice scritto a mano JNI scritto dai client della classe Java.
  • Wrappers scritti a mano da JNI scritti da voi per i clienti della vostra classe.
  • JACE - wrapper generati. JACE è uno strumento gratuito. L'ultima versione era nel 2008; non sono sicuro che lo sviluppo stia continuando
  • JunC++ion - wrapper generati. Questa libreria commerciale produce i migliori risultati con il minimo sforzo di sviluppo. Supporta callback Java, con classi C++ che implementano interfacce Java. L'autore è molto reattivo e un ragazzo molto simpatico. Tuttavia, esiste un cartellino del prezzo e dovrai essere sicuro dei costi di implementazione.
2

ho usato questo prodotto molto tempo fa, http://www.codemesh.com/products/junction/

Lo farà esattamente quello che vuoi.

Solo un disclaimer, l'ho usato quasi 6 anni fa. Non sono affliato con questo prodotto.

+0

. sembra che il sito sia inattivo ... ma bello sapere che sono l'unico ad avere il problema (-: – vrdhn

Problemi correlati