JNI:Java代码调用本地代码

1. JNI概述

JNI 是 Java Native Interface 的简称

  • Java是跨平台的编程语言,但是在有些时候仍然是有需要调用本地代码(这些代码通常是由 C 与 C++ 编写的)。

  • JNI 是 Java 平台的一个功能强大的接口。这个 JNI接口提供了Java与操作系统本地代码相互调用的功能。

2. C/C++代码的步骤

  • 在 Java 类中声明一个native方法

public native void sayHello();
  • 使用 javah 命令生成包含 native 方法声明的C/C++头文件

javah com.omg.NativeLib
  • 将生成的C/C++头文件来编写C/C++源文件

#include<iostream>
#include "com_omg_NativeLib.h"
using namespace std;




JNIEXPORT void JNICALL Java_com_olive_NativeLib_sayHello (JNIEnv *, jobject){
     cout << "hello world" << endl;
}
  • 将C/C++源文件编译成动态链接库(windows对应DLL,Linux对应so)

  • 把dll文件的路径添加到环境变量PATH中

  • 在Java类中加载dll文件,然后调用声明的native方法

System.load("C:\\lib\\NativeCodeJni.dll");
NativeLib nl = new NativeLib();
nl.sayHello();


或者


System.loadLibrary("NativeCodeJni");
NativeLib nl = new NativeLib();
nl.sayHello();

3. 使用JNI弊端

  • 使用了 JNI,那么这个Java Application 将不能跨平台了。如果需要移植到别的平台上,那么需要重新编写native代码

  • Java 是强类型的语言,而 C/C++并不是。因此,在编写JNI时要更小心

  • 总之,必须在构建Java程序的时候,尽量少用本地代码

Visual studio环境配置://www.cnblogs.com/sysu-huangwei/p/7466481.html

015f475732d9f70037400cd6bad4d657.png

分享&在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BUG弄潮儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值