jni基础入门

Java调用C++

静态注册

1.1将需要用本地代码实现的Java方法加上native声明
1.2使用javac命令编译Java类
1.3使用javah命令生成.h头文件
1.4使用本地语言实现头文件中声明的方法
1.5将本地代码编译生成动态链接库
1.6在Java类中加载这一动态链接库

C++调用Java

为了能获取java层面的一些参数或调用java层的函数

jni调用java对象的方法

调用对象的某个方法 Call<返回类型>Method<传参类型>,比如调用AppInfogetVersionCode对应的就是CallIntMethod,调用setVersionCode对应的就是CallVoidMethod方法

jni获取java对象的属性值

获取java对象的属性对应的值的方法为GetXXXXField,XXXX 为数据类型,比如GetIntFieldGetShortField等等,如果不是基本型则为GetObjectField,如果属性为static的则加上Static,比如GetStaticIntFieldGetStaticObjectField。在jni中是不看成员变量的作用域的,不管你是privateprotectedpublic的,加finnal也一样,它都可以读取里面的值,和反射不一样

  • 基础类型

    java c++ size/type

| boolen | jboolean | unsigned 8 |
| byte | jbyte | signed 8 |
| char | jchar | unsigned 16 |
| short | jshort | signed 16 |
| int | jint | signed 32 |
| long | jlong | s 64 |
| float | jfloat | s 32 |
| double | jdouble | s 64 |
| void | void | 0 |

  • 引用类型

    java c++
    All objects jobject
    java.lang.Class 实例 jclass
    java.lang.String 实例 jstring
    arrays jarray
    Object[] jobjectArray
    boolean[] jbooleanArray
    byte[] jbyteArray
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值