JAVA通过JNI调用C代码。

开发阶段遇到很多坑,在此记录一下。

1.方法声明

在代码中声明一个方法,该方法在linux环境中会通过动态链接库来调用C代码。


切记!!!一定要将方法声明要加native


2.编译JAVA文件,然后通过命令行 javah -jni xxx(class文件)生成.h的JNI文件。


JNI文件中的方法,就是你在Java里定义的方法,语法为JNI的。此时你需要写对应的c代码,去实现h文件中相应的方法。


切记!!! JNI文件中声明的方法,与C代码中实现的方法,包名类名一定要完全一致!!!不然运行程序,会出异常。


3.将写好的c代码打包。


因为我的C代码中,调用了另一个C文件中的代码,所以将这两个文件一起打包。

切记!!!如果实现JNI的C代码中引用了其他文件代码,一定要将这两个C文件一起打包。

4.将打包好的SO文件放到/lib 或/usr/lib下

这两个目录一般为linux默认的动态链接库路径,这个路径可以更改。

5.调用


System.loadLibrary("ALGORITHM");

这一段代码,就是去加载动态链接库,加载你打包好的SO的包。然后实例化你声明native方法的类,然后调用方法,传参即可。

此处还有坑!!!

ALGORITHM

为打包生成so包的名,但是!!!放在动态链接库路径下的so的包,在这个名的基础之上一定还要加上一个lib.!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值