Allora il problema è il seguente. Sto cercando di far interagire una libreria in c con java tramite JNI.
Se da java chiamo native CallMethod().. ; creo il file .h con javah e implemento il file.c non c'è problema.. Se però creo un file .cpp ed effettuo la stessa cosa (accorto del fatto che in c++ non devo mettere (*env)->method(env,..) ma solo env->method(param)) La creazione della libreria fa a buon fine. Ma quando lancio in java la classe un eccezione di UnsatisfiedLinkError undefined symbol: __gxx_personality_v0. Che cosa può essere? I parametri di compilazione sono i seguenti:
gcc -o libnativelib.so -shared -Wl,-soname,libnative.so -I/usr/lib/java/include/ -I/usr/lib/java/include/linux nativelib.cpp -static -lc
Il corpo della librearia è veramente stupido
JNIEXPORT jstring JNICALL Java_Esercizio1_caricaStringa
(JNIEnv * env, jobject jobj)
{
//char string[20]={"ciao ciccio"};
jstring str = env->NewStringUTF("ciccio");
//memcpy(string,"coglione",6);
return (str);
}
Qualcuno mi può aiutare?