通过JNI实现Java和C++的相互调用_王肇朋的博客-优快云博客
java调用c/c++
1.java 定义native方法 hello()
2.编译工程java类成class文件
3.执行javah 类路径名 生成.h文件 也就是c++入口声明 Java_包名(.用_代替)_java方法名
4.编写cpp文件和函数
例如上面 报名 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;
(140条消息) AndroidStudio jni C++与Java互相调用_天空中的野鸟的博客-优快云博客_android c++调用java