2010-09-22 7 views
7

Esiste un buon strumento per generare java (+ supporto JNI se necessario) da un file di intestazione in modo che una libreria C o C++ possa essere utilizzata così com'è. Una specie di rovescio di javah. La vera funzionalità sarebbe nel C/C++, il Java sarebbe solo uno shim in cima per determinati utenti.C/C++ header to java

Non sono esperto di JNI ma, per quanto posso vedere, Javah ti costringe a fare questo in prima fila. Ti costringe ad avere JNI-isms che penetrano inutilmente nel codice C a meno che tu non scriva da solo uno strato di conversione. E scrivere un livello di conversione a mano è fondamentalmente una perdita di tempo, dal momento che tutte le informazioni sono presenti nel file di intestazione all'inizio.

risposta

3

Per C, è possibile utilizzare JNA. È necessario dichiarare le firme delle funzioni in modo ridondante in Java, ma non è necessario scrivere alcun codice di colla. JNA è molto facile da usare.

Per C o C++, è possibile utilizzare SWIG. SWIG è un po 'più complesso da usare, ma genera automaticamente wrapper Java per le classi C++. Mi sto divertendo.

+0

Grazie. Dopo aver letto i documenti per entrambi un po '. SWIG sembra che sia probabilmente la soluzione che ho bisogno di usare. – idij

2

Sembra SWIG funziona con Java: http://www.swig.org/Doc2.0/Java.html

forse questo non è esattamente quello che stai cercando, però, dal momento che non è necessario aggiungere le direttive SWIG ...

+0

SWIG è ora alla versione 2. Il tuo collegamento è 1.3. –

+0

Oops, sono appena andato con quello che Google mi ha dato. Fisso. –

3

JNAerator fa esattamente questo: legge C/C++/ObjectiveC intestazioni ed emette binding Java che si basano su BridJ (C/C++), JNA (solo C) o Rococoa (ObjectiveC, utilizza JNA).