JNI,调用方法布尔 [英] JNI , call boolean method

查看:596
本文介绍了JNI,调用方法布尔的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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);


解决方案

我的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");

这篇关于JNI,调用方法布尔的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆