Return CallStaticBooleanMethodV 类型与 Java 方法签名不匹配 - 从 C/C++ 调用 Java 方法
Return type of CallStaticBooleanMethodV does not match Java method signature - Calling Java method from C/C++
我的 java 方法签名是 -
public static void JRequestRender()
并在 C/C++
void RequestRender()
{
...........
...........
jclass cls = env->GetObjectClass(g_JNIWrapperObj);
jmethodID mid = NULL;
if(cls) {
mid = env->GetStaticMethodID(cls, "JRequestRender", "()V");
}
if(mid)
env->CallStaticBooleanMethod(cls, mid);
env->DeleteLocalRef(cls);
.....................
}
这适用于除 Lollipop 之外的所有 Android 版本。 Lollipop 的错误日志是:
art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallStaticBooleanMethodV does not match void com.foo.bar.MyJniWrapper.JRequestRender()
..........................................
.............................................
JRequestRender returns 无效,不是布尔值。您需要使用 CallStaticVoidMethod。
我的 java 方法签名是 -
public static void JRequestRender()
并在 C/C++
void RequestRender()
{
...........
...........
jclass cls = env->GetObjectClass(g_JNIWrapperObj);
jmethodID mid = NULL;
if(cls) {
mid = env->GetStaticMethodID(cls, "JRequestRender", "()V");
}
if(mid)
env->CallStaticBooleanMethod(cls, mid);
env->DeleteLocalRef(cls);
.....................
}
这适用于除 Lollipop 之外的所有 Android 版本。 Lollipop 的错误日志是:
art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: the return type of CallStaticBooleanMethodV does not match void com.foo.bar.MyJniWrapper.JRequestRender()
..........................................
.............................................
JRequestRender returns 无效,不是布尔值。您需要使用 CallStaticVoidMethod。