jstring Java_com_example_jni_MainActivity_get(JNIEnv *env, jobject obj, jstring str){
// C中声明字符串的方式
// 1,char string0[10];
// 2,char string1[]="prison break";
// 3,char string2[100]="michael scofield";
jstring st = "sdsda";
char *cstr = NULL;
jint len = 0;
//len = (env)->GetStringLength(env, st);
//cstr = (char)malloc(len * sizeof(len + 1));
//(*env)->GetStringUTFRegion(env, st, 0, len, cstr);
//return (*env)->NewStringUTF(env, cstr);
return st;`
}
上面两种方式返回jstring都会报错
我想直接这样声明 jstring=“aaa”; 没有问题吧!
我查了资料,猜想是不是编码大小问题,如果是这个问题,那么jstring=“aaa”;是什么类型的编码
肯定有问题啊,首先c语言没有string的概念只是char指针,c++封装后才有的string类型,你这直接赋值没有道理的typedefjobjectjstring;这是jni.h的声明,而且jni的jstring只能用env去调用newstringutf的方法去构造<atarget='_blank'>@命运的遗迹typedeflongjint;这些都在头文件里声明,所以可以出现,他们主要是用来和java类型交互的,j开头的就是标识java中的类型,他们的主要功能是和c/c++的类型进行转换,以方便写c/c++的代码,但是返回给Java的只能是jxx的类型嗯!非常同意的讲解!但是我讴歌疑问就是,为什么在.c文件中可以出现jtring呢,或者说其他的jintjboolean....等!这些代表的是什么啊!我对这个始终有点疑惑!请指点下!还有就是jintjstring等这些有什么意义呢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。