DevOps系列之 JNI实现Java调用C的实现案例

JNI(Java Native Interface)允许Java代码与其他语言编写的代码进行交互。以下是一个简单的JNI示例,演示如何使用JNI在Java中调用C/C++函数。

最终的目录结构如下:

JNI(Java Native Interface)允许Java代码与其他语言编写的代码进行交互。以下是一个简单的JNI示例,演示如何使用JNI在Java中调用C/C++函数。

1. 创建Java类

首先,创建一个Java类,其中包含一个native方法。

public class NativeDemo {  
    static {  
        System.loadLibrary("NativeLib"); // 加载动态链接库  
    }  
  
    public native int add(int a, int b); // native方法  
  
    public static void main(String[] args) {  
        NativeDemo demo = new NativeDemo();  
        System.out.println("Result: " + demo.add(2, 3));  
    }  
}

2. 生成JNI头文件

使用javah工具从Java类生成C头文件。在命令行中执行以下命令:

javah -jni NativeDemo

这将生成一个名为NativeDemo.h的头文件。
3 . 实现C/C++函数

在C/C++文件中实现头文件中声明的函数。例如,创建一个名为NativeDemo.c的文件:

#include <jni.h>  
#include "NativeDemo.h"  
  
JNIEXPORT jint JNICALL Java_NativeDemo_add(JNIEnv *env, jobject obj, jint a, jint b) {  
    jint sum = a + b;  
    return sum;  
}


4. 编译动态链接库

使用GCC编译器将C/C++代码编译为动态链接库

gcc -shared -o NativeLib.dll NativeDemo.c -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -L"%JAVA_HOME%\bin"

这会生成一个名为NativeLib.dll(Windows)或libNativeLib.so(Linux)的动态链接库。
5.  运行Java程序

确保NativeLib.dll(Windows)或libNativeLib.so(Linux)位于Java的库路径中,然后运行Java程序:

编译Java字节码文件
javac NativeDemo.java

运行程序

java NativeDemo

这将输出“Result: 5”,因为2 + 3 = 5。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Coder_Boy_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值