DevOps系列之 JNI实现Java调用C的实现案例
2024-01-01 13:42:43
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。
文章来源:https://blog.csdn.net/Coder_Boy_/article/details/135324094
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!