JNI函数是否可能返回整数或布尔值?

MOH*_*MED 2 c java java-native-interface android

JAVA代码

boolean b = invokeNativeFunction();
int i = invokeNativeFunction2();
Run Code Online (Sandbox Code Playgroud)

C代码

jboolean Java_com_any_dom_Eservice_invokeNativeFunction(JNIEnv* env, jobject obj) {
    bool bb = 0;
    ...
    return // how can return 'bb' at the end of the function?
}

jint Java_com_any_dom_Eservice_invokeNativeFunction2(JNIEnv* env, jobject obj) {
    int rr = 0;
    ...
    return // how can return 'rr' at the end of the function?
}
Run Code Online (Sandbox Code Playgroud)

JNI函数是否可能返回整数或布尔值?如果是的话,我该怎么做?

ali*_*dro 6

是的,只需直接返回值即可.

JNIEXPORT jint JNICALL Java_com_example_demojni_Sample_intMethod(JNIEnv* env, jobject obj,
    jint value) {
    return value * value;
}

JNIEXPORT jboolean JNICALL Java_com_example_demojni_Sample_booleanMethod(JNIEnv* env,
    jobject obj, jboolean unsignedChar) {
    return !unsignedChar;
}
Run Code Online (Sandbox Code Playgroud)

Java原始类型和本机类型之间存在映射关系,此处引用.