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层。

这个只不过是自己的流水账,偶尔有一些心得,错误的地方概不负责
原文地址:https://www.cnblogs.com/ashitaka/p/5948722.html