段小白的JNI编程学习笔记
来源:互联网 发布:山西省快乐十分软件 编辑:程序博客网 时间:2024/06/10 19:12
1.环境 ndk,cygwin with gcc/g++/make
0X 1 如何在Java中调用C函数
1)在Java class中声明函数,如我们在HelloTest类中声明:public native void hello(String str);
2)在1)之前加载对于的so文件,如:System.loadLibrary("test"); //load libtest.so
OX 2 如何实现native函数,编译为对应的so文件
1)first我们要在和src同级的根目录下面建一个jni文件夹
2)native函数的实现
有两种方式:
A )可以使用javah命令生成对应的头文件,然后实现对应的函数,以前面的hello函数为例:
在任意目录下,先运行javah命令:eg:javah -classpath absolutepath\xxx\bin\classes -jni pkgname.classname
-classpath指定project中所有class文件的绝对路径
执行完成后会在当前目录生产对应的.h头文件
通过这种方式生成的文件名又长又难看,但是特点就是方便。
B)很多程序猿都不屑第一种方法,所以他们在C文件中自己重写了JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved)
在该函数中注册需要的native函数,
编译时出现的一些错误和解决方法:
NO.1 : Android NDK: Host 'awk' tool is outdated. Please define NDK_HOST_AWK to point to Gawk
1>在cygwin环境下编译,出现以上错误,你是不是在控制台使用命令打开cygwin的呢?我在控制台下打开启动cygwin执行编译命令发现报以上的错误,打开客户端编译没问题
2>工程向上找不到 libs/armeabi/目录存方输出的so,也会出现同样的错误,有的人说程序必须在jni下,经过测试,并非如此,可以在任意文件名的目录内
- 段小白的JNI编程学习笔记
- [android学习笔记]学习jni编程
- (2)jni编程学习笔记
- 学习JNI编程的博文链接
- Android JNI编程学习笔记——前言
- Android JNI编程学习
- jni学习笔记
- JNI学习笔记
- JNI入门学习笔记
- android JNI 学习笔记
- android JNI 学习笔记
- android jni 学习笔记
- android JNI 学习笔记
- Android JNI 学习笔记
- JNI学习笔记
- JNI学习笔记
- JNI 学习笔记
- JNI学习笔记一
- 常用二极管,三极管参数
- GCC 4.8.2 编译安装小记
- 新的开始
- atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect
- myeclipse10在win7下面出现中文变小的解决方法
- 段小白的JNI编程学习笔记
- 绝对值最大
- 一句话想法--网页与流量
- CentOS 6.3 编译安装GCC清晰简易教程(可通用大部分Linux版本)
- 按照单元格计算后的结果排序
- Oracle 视图备忘
- 设备坐标、逻辑坐标、物理坐标的区别与转换(更改原文一处错误)
- Pat(Advanced Level)Practice--1018(Public Bike Management)
- 要经过思考之后才能批判性地接收