Pass a string to/from Java to/from CTag(s): JNI
To Java from C (as seen from the previous How-to) :
#include "JavaHowTo.h" JNIEXPORT jstring JNICALL Java_JavaHowTo_sayHello (JNIEnv *env, jobject obj) { return env->NewStringUTF("Hello world"); }
public class MyClass { public String sayHello(){ return "Hello world From Java"; } }
JNIEXPORT void JNICALL Java_JavaHowTo_sayHello (JNIEnv *env, jobject obj) { const char *str; jclass myclass_class =(jclass) env->NewGlobalRef (env->FindClass ("MyClass")); // we need the MyClass constructor jmethodID constructorID = env->GetMethodID (myclass_class, "", "()V"); // and the sayHello() method jmethodID methodID = env->GetMethodID (myclass_class, "sayHello", "()Ljava/lang/String;"); // instanciate a MyClass object jobject myclass_object = env->NewObject (myclass_class, constructorID); // call the sayHello() method jstring s = (jstring) env->CallObjectMethod (myclass_object, methodID); // convert the Java String to use it in C str = env->GetStringUTFChars(s, 0); printf("%s" , str); env->ReleaseStringUTFChars(s, str); }
class JavaHowTo { public native void sayHello(); static { System.loadLibrary("javahowto"); } }
public class JNIJavaHowTo { public static void main(String[] args) { JavaHowTo jht = new JavaHowTo(); jht.sayHello(); } }
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com