View Full Version : Wrapper da C a JNI
Ciao a tutti sto cercando di fare un wrapper da C a JAVA.Avendo i sorgenti in C ho pensato di utilizzare JNI.Ho letto una guida su JNI ma non ho capito bene i passaggi da fare,sono un po confusa.Qualcuno mi sa spiegare i passaggi che devo fare per inserire il codice C in Java con JNI?
La guida mi dice di scrivere la classe in java di compilarlo,poi di creare il file header che verrà poi richiamato dal file .c così da creare il file .dll , ma non dovrei fare il contrario? cioè fare una classe in java che richiami i file in c? :confused:
Cait Sith
09-11-2012, 21:29
Premetto che JNI non è un meccanismo semplicissimo. Ti consiglio di riferirti a questo documento (http://www.soi.city.ac.uk/~kloukin/IN2P3/material/jni.pdf) che era il pdf che si poteva trovare sul sito della sun un po' di tempo fa. Se leggi l'introduzione vedrai che i capitoli che ti servono sono i primi (gli ultimi sono le specifiche per implementare una java virtual machine)
A pagina 12 c'è il diagramma dei passaggi che devi eseguire che poi sono quelli che hai detto tu.
Per il file .h che viene creato da javah devi fare un .c in cui implementi l'interfaccia che trovi nel .h. Poi in questo .c (il wrapper) puoi chiamare altre funzioni C che hai già scritto.
ok ho seguito la guida,per farmi compilare e creare il file .dll,mi fa usare il prompt di microsoft visual studio,io l ho aperto ho inserito i comandi,solo che non m trova la directory del file .c che ho creato e che si trova sul desktop in una cartella.Devo inserirlo da qualche parte? perchè ho anche provato a scrivere nel prompt il percorso del file .c ma me lo ignora! :muro: mi fa fatal errore c1083 impossibile aprire il file di origine .c no such file or directory
Cait Sith
10-11-2012, 23:29
Non ho molta esperienza di programmazione in windows, e comunque conosco meglio cygwin rispetto a il visual studio. Un consiglio che ti posso dare è di spostarti con il prompt nella directory del file e poi provare a compilare: magari fa casino con gli spazi nei nomi delle directory.
Non ho molta esperienza di programmazione in windows, e comunque conosco meglio cygwin rispetto a il visual studio. Un consiglio che ti posso dare è di spostarti con il prompt nella directory del file e poi provare a compilare: magari fa casino con gli spazi nei nomi delle directory.
ora provo ad installare cygwin,penso sia meglio usare il prompt del sistema
allora,ho risolto con il compilatore,ora ho solo un problema,da fatal error c1083,non trova la libreria jni.h che sta in jdk.
per far compilare e creare la dll scrivo nel prompt in questo modo:
cl -IC:\program files\java\jdk1.7.0\include -IC:\program files\java\jdk1.7.0\include\win 32 -LD file.c -FeNome_libreria.dll
ora non vedo errori nel codice,non riesco a capire perchè non vede la libreria jni.h
Cait Sith
14-11-2012, 23:39
qui (http://msdn.microsoft.com/en-us/library/et4zwx34.aspx) dice che con il visual studio, per aggiungere le path degli include, bisogna fare /I e non -I come in linux
prova un po' a vedere se risolvi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.