Hi,
ich bin gerade dabei mich mit JNI zu beschäftigen. Aber irgendwie will mein Code nicht gehen habe ein Beispiel aber das klaptt nicht wäre schön wenn jemand ein tip hat was ich falsch mache.
Ich möchte aus C einfach eine java Methode aufrufen..
Dazu habe ich in C folgendes geschrieben
mein java Code:
Das Problem das ich habe ist das jmid immer 0 ist was wohl bedeutet das die Funktion nicht gefunden wird aber warum kann das was mit den Package zutun haben? muss ich die noch irgendwo angeben
ich bin gerade dabei mich mit JNI zu beschäftigen. Aber irgendwie will mein Code nicht gehen habe ein Beispiel aber das klaptt nicht wäre schön wenn jemand ein tip hat was ich falsch mache.
Ich möchte aus C einfach eine java Methode aufrufen..
Dazu habe ich in C folgendes geschrieben
Code:
JNIEXPORT jint JNICALL Java_jni_test_JniInterface_jniDisconnect (JNIEnv *env, jobject ob) {
printf("JNI c Part\n");
jclass icls = env->GetObjectClass(ob);
/* Adresse der Methode "callback" des aufrufenden Java Objektes
ermitteln: */
jmethodID jmid = env->GetMethodID(icls, "blub", "(I)V");
if (jmid == 0) {
printf("jmid == NULL\n");
}
/* Methode "callback" des aufrufenden Java Objektes aufrufen: */
env->CallVoidMethod(ob, jmid, 5);
printf("Wieder zurück im native Code\n");
return 1;
}
mein java Code:
Code:
package jni.test;
public class JniInterface {
public static native int jniDisconnect();
private void blub( int test){
System.out.println("Java Callback blub");
}
public static void main(String[] args) {
jniDisconnect();
}}
Das Problem das ich habe ist das jmid immer 0 ist was wohl bedeutet das die Funktion nicht gefunden wird aber warum kann das was mit den Package zutun haben? muss ich die noch irgendwo angeben