干活前先把流程理清楚,先把工作场景,分析步骤
1.创建一个本地方法的java定义(就是native方法定义)
2.将java定义转化成c定义(c定义就是.h文件,就是头文件,头文件其实就是将各个.c文件中重复的声明、宏定义等提取出来放进一个文件中,便于其他.c文件共用这部分的代码)
3.实现c定义(.c文件引用c定义,然后将c定义中的方法实现了)
4.将c实现转化成链接库
5.加载链接库,调用本地方法触发链接库的实现
先查看本地方法的类,步骤1
/**
* 调用本地方法的组件
*/
public class NativeUtils {
/*比大小*/
public native int max(int i, int y);
}
编译生成字节码文件:javac NativeUtils.java,目录下多了.class文件,步骤2
编译生成头文件:javah NativeUtils,目录下多了.h文件
查看头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeUtils */
#ifndef _Included_NativeUtils
#define _Included_NativeUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: NativeUtils
* Method: max
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_NativeUtils_max
(JNIEnv *, jobject, jint, jint);
#ifdef __

本文详细介绍了在Linux系统中,如何使用Java的JNI(Java Native Interface)来调用本地C方法的步骤。从创建Java的native方法定义,到转化为C头文件,再到实现C代码,生成链接库,最后加载库并调用本地方法。通过一个实例展示了从编译Java源码,生成头文件,编写C实现,编译链接库,到编写测试类并执行的过程。
最低0.47元/天 解锁文章
257

被折叠的 条评论
为什么被折叠?



