Android:通过JNI调用c++代码

这篇博客详细介绍了如何在Android应用中通过JNI(Java Native Interface)调用C++代码。首先,通过JNI的FindClass方法找到指定的Java类,并获取其静态方法的ID。然后,利用GetStaticMethodID来指定要调用的方法及其参数类型,最后通过CallStaticVoidMethod执行该方法。文中还列举了JNI中与Java类型对应的C++类型,并提供了相关的头文件、实现文件以及构建文件的配置示例,帮助读者理解如何在实际项目中实现Java和C++的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些说明

//查找JNIAPI类,得到类的class,包名每级用/分隔

jclass clazz = env->FindClass("com/g/im/JNIAPI");

//通过类查找静态方法,得到方法的引用,callBackLogin为方法名称,"Ljava/lang/String;"表示函数参数为String类型,要用括号括起来,V表示函数返回值为void

jmethodID methodId = env -> GetStaticMethodID(clazz, "callBackLogin", "(Ljava/lang/String;)V")


//调用此方法,第三个参数为

env->CallStaticVoidMethod(clazz, id, jstring类型的字符串)

在JNI中与Java类型对应的类型如下,一个方法有多个参数时直接组合使用:

类类型:L包名/类名;  需要以分号结尾,如:Ljava/lang/String;

类类型[]:[L包名/类名;  需要以分号结尾,如:[Ljava/lang/String;

boolean:Z        如:env -> GetStaticMethodID(clazz, "callBackLogin", "(Z)V")

boolean[]:[Z 

byte:B

byte[]:[B

char:C

char[]:[C

short

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值