如何JNI字符串类型函数映射?

时间:2015-09-12 20:43:02

标签: java android-ndk java-native-interface

我有以下表格进行方法映射: -

static jint sum_JNI(JNIEnv * env, jclass clazz, jint a, jint b){
    return a + b;
}

static jint mul_JNI(JNIEnv * env, jclass clazz, jint a, jint b){
    return a * b;
}

static jstring get_string(){
    return (jstring)"string";
}


static JNINativeMethod method_table[] = {
        {"sum_JNI", "(II)I", (void*) sum_JNI},
        {"mul_JNI", "(II)I", (void*) mul_JNI},
       // {"get_string","()C", (void*) get_string}
};

我不知道这个表中jstring / string的类型是什么。试过上面的代码。但它不起作用。怎么做?

1 个答案:

答案 0 :(得分:0)

jstring是Java语言对象。您不能简单地使用jni.h中的定义将C字符串文字转换为一个。

使用NewStringUTF功能从"修改后的"创建jstring。 UTF-8字符串文字。方法声明的对象类型是Ljava/lang/String; - 没有单字符值。

另请参阅JNI Tipsinterface spec