JAVA通过JNI调用C代码。

xiaoxiao2021-02-28  18

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

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.!!!

转载请注明原文地址: https://www.6miu.com/read-2650124.html

最新回复(0)