kotlin + C++ 使用jni中遇到的一些坑和建议

本文为笔者在做https://github.com/Nambers/MiraiCP中遇到的坑

kotlin部分

kotlinc

使用kotlinc代替javac命令,需要自己在搜索引擎上下载

函数签名

javap -s 类包路径查询函数签名,如C:\Program Files\Java\jdk1.8.0_261\bin\javah.exe" org.example.mirai.plugin.CPP_lib 该命令好像不支持>jdk 10
另,也可以使用动态绑定函数,就不用每次用javah生成头文件了

传输类型

在jni中双向传输数据最好都使用jni类型,如果不使用好像编译器也不会报错,如传输long类型用强转转到jlong

协程启动方式之一

runblock{ launch{ 函数() } }
其中runblock是阻塞
launch是启动协程在默认地方

C++部分

JNIEnv

每次调用c++部分都会传入一个JNIEnv*指针,而该指针所指向的是局部的,相当于在该函数结束后该指针就会失效,而vs的编译器未指明该错误,但是实际运行的时候jvm会报错EXCEPTION

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值