Java JNI函数是否可能返回整数或布尔值?
JAVA代码Java JNI函数是否可能返回整数或布尔值?,java,android,c,java-native-interface,Java,Android,C,Java Native Interface,JAVA代码 boolean b = invokeNativeFunction(); int i = invokeNativeFunction2(); 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? }
boolean b = invokeNativeFunction();
int i = invokeNativeFunction2();
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?
}
C代码
boolean b = invokeNativeFunction();
int i = invokeNativeFunction2();
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?
}
JNI函数是否可能返回整数或布尔值?如果是,我怎么做?我认为您的方法签名可能是错误的 如果您注意到以下几点: 1) 在方法周围添加了
JNIEXPORT
和JNICALL
。。
2) toj
要返回的参数类型
我认为您需要将您的int示例简化为:
JNIEXPORT jint JNICALL Java_com_any_dom_Eservice_invokeNativeFunction2(JNIEnv* env, jobject obj) {
jint rr = 99;
...
return rr;
}
为什么不做一些静态强制转换:
return static_cast<jboolean>(bb);
return static_cast<jint>(rr);
是的,直接返回值即可
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;
}
Java原语类型和本机类型reference之间存在映射关系