JNI,调用方法布尔布尔、方法、JNI

由网友(失心狂)分享简介:我有一个Java方法得到一个字符串,返回布尔我把它从JNI是这样的: jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName...

我有一个Java方法得到一个字符串,返回布尔

我把它从JNI是这样的:

  jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName                    (Ljava /朗/字符串;)B);        如果(function2ID == NULL)            LOG(找不到MyFuncName功能)            jboolean IsAutoPlay = env-> CallBooleanMethod(                    OBJ,                    function2ID,                    env-> NewStringUTF(名)); 

我得到致命信号11,任何想法有什么错在语法?谢谢

答:我的Java签名是返回布尔而不是布尔

  jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName                    (Ljava /朗/字符串;)B); 

需要为Z的而不是将b

  jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName                    (Ljava /朗/字符串;)Z); 
NDK JNI的使用方法

解决方案

我的Java签名是返回布尔而不是布尔

也jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName                    (Ljava /朗/字符串;)B);需要为Z的而不是将b

  jmethodID function2ID = env->的GetMethodID(                    activityClass,                    MyFuncName                    (Ljava /朗/字符串;)Z); 

i got a java method that get a string and return bool

i call it from jni like this:

jmethodID function2ID = env->GetMethodID(
                    activityClass,
                    "MyFuncName",
                    "(Ljava/lang/String;)B");
        if ( function2ID == null )
            LOG("Could not find MyFuncName Function")

            jboolean IsAutoPlay =    env->CallBooleanMethod(
                    obj,
                    function2ID,
                    env->NewStringUTF(name));

I get Fatal Signal 11, Any idea what's wrong in the syntax ? Thanks

Answer: My Java signature was to return Boolean instead of boolean

also

jmethodID function2ID = env->GetMethodID(
                    activityClass,
                    "MyFuncName",
                    "(Ljava/lang/String;)B");

need to be Z instead of B

jmethodID function2ID = env->GetMethodID(
                    activityClass,
                    "MyFuncName",
                    "(Ljava/lang/String;)Z");

解决方案

My Java signature was to return Boolean instead of boolean

also jmethodID function2ID = env->GetMethodID( activityClass, "MyFuncName", "(Ljava/lang/String;)B"); need to be Z instead of B

jmethodID function2ID = env->GetMethodID(
                    activityClass,
                    "MyFuncName",
                    "(Ljava/lang/String;)Z");

阅读全文

相关推荐

最新文章