JNI 入门级实例

【扫盲知识】什么是JNI及JNI用来做什么?
JNI是Java Native Interface的缩写,中文为JAVA本地调用。java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
【实现步骤】
·编写带有native声明的方法的java类
  ·使用javac命令编译所编写的java类
  ·使用javah -jni java类名生成扩展名为h的头文件
  ·使用C/C++实现本地方法
  ·将C/C++编写的文件生成动态连接库dll文件
Java类<<<---Dll--->>>C/C++程序
Java类声明的方法native不用写实现,dll文件相当对外的接口,C语言写实现。
Java文件

public class TestNative{

//一个加分运算
private native int add(int x,int y);

public static void main(String[] args) {
TestNative tn = new TestNative();
int r = tn.add(30,1000);
System.out.println("result = "+r);
}

//加载动态库
static {
System.loadLibrary("TestNative");
}
}

命令行,当前目录下运行:javac TestNative.java生成class文件
运行:javah -jni TestNative生成.h头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestNative */

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: TestNative
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_TestNative_add
(JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif

编写C的实现

#include<jni.h>;

JNIEXPORT jint JNICALL Java_TestNative_add
(JNIEnv *ev, jobject obj, jint x, jint y)
{
return x+y;

}

编译后可以生成TestNative.dll文件


命令行运行:java TestNative
可以看到输出结果。
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值