Jni碰到的一个异常

  Java与C++都有String对象,而c没有,只有char类型,所以在向C传入String类型的时候,如何处理需要注意一点

jstring
    Java_com_skymaster_hs_test4_MainActivity_getString(JNIEnv *env,jobject,jstring str){
        const char* cstr = env->GetStringUTFChars(str,0);
        char temp[30] = "hs";
        strcat(temp,cstr);
        jstring ret = env->NewStringUTF(temp);
        return ret;
    }

jstring 是JNI层的变量,作为java与c的桥梁

在c中要处理java的String对象,只能定义一个char* 指针,但是注意要定义一个char 数组来保存String的字符串,因为形参

在返回的时候会销毁,所以如果不保存内容最后放回的是null。c的编码格式是UTF所以调用NewStringUTF函数来转换成string.返回给java层。

posted @ 2016-10-11 11:52  麦哈顿博士  阅读(150)  评论(0编辑  收藏  举报