要使用jni开发需要包含jni.h头文件
JNIEXPORT JNI : 是一个关键字,不能少(编译能通过),标记为该方法可以被外部调用
jstring : 代表java中的string
JNICALL: 也是一个关键字,可以少的jni call
JNIENV : 这是c和java相互调用的桥梁
jobject : java传递下来的对象
jclass : java传递下来的class对象
JNIEnv 类型声明
#if defined(__cplusplus)
typedef _JNIEnv JNIEnv;
typedef _JavaVM JavaVM;
#else
typedef const struct JNINativeInterface* JNIEnv;
typedef const struct JNIInvokeInterface* JavaVM;
#endif
寻找签名,在jdk的bin目录下的javap程序
![](https://img-blog.csdnimg.cn/img_convert/56aaeaa65ba64f87aaeb15c5f109d32c.png)
c/c++中访问java中的非静态属性
![](https://img-blog.csdnimg.cn/img_convert/6f055d27da1a485ba0fd861fc6af7397.png)
![](https://img-blog.csdnimg.cn/img_convert/73b96821babe4407a59c4a501d172b6e.png)
![](https://img-blog.csdnimg.cn/img_convert/250c92e08f374732a219856ad29be9b3.png)
c/c++中访问java中的静态属性
![](https://img-blog.csdnimg.cn/img_convert/ee6881e5a4c246d1ab9340c5991115ea.png)
c/c++访问java中的非静态方法
![](https://img-blog.csdnimg.cn/img_convert/061fa8ee03f24d2a87a036dd9a2f6986.png)
c/c++访问java中的静态方法与获取非静态方法类似
![](https://img-blog.csdnimg.cn/img_convert/8eecdc3b4aac4bc5be5434d3e4880b37.png)
native构建java对象,并返回给java层