通过JNI实现Java和C++的相互调用_王肇朋的博客-CSDN博客
java调用c/c++
1.java 定义native方法 hello()
3.执行javah 类路径名 生成.h文件 也就是c++入口声明 Java_包名(.用_代替)_java方法名
例如上面 报名 com.test
生产的c++入口就是 Java_com_test_hello 这样这个名称也是唯一的
c/c++调用java呢
类似于反射
/得到class
jclass jclazz = (*env)->GetobjectClass(env,jobj);
//jfieldID
//签名:类型的简称
//属性,方法
jfieldID fid = (*env)->GetFieldID(env,jclazz,"name","Ljava/lang/String;");
//获取key属性的值
//注意:key为基本数据类型,规则如下
//(*env)->GetIntField(); (*env)->Get<Type>Field();
jstring jstr = (*env)->GetobjectField(env,jobj,fid);
//jstring转为 C/C++字符串
char * c_str = (*env)->GetStringUTFChars(env,jstr,NULL);
strcat(c_str,"android");
//拼接完成之后,从C字符串转为jstring
jstring jstr_new = (*env)->NewStringUTF(env,c_str);
//修改key的属性
//注意规则:Set<Type>Field
(*env)->SetobjectField(env,jobj,fid,jstr_new);
return jstr_new;
原文地址:https://www.jb51.cc/wenti/3285708.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。