// Java 代码
public class Main {
// 声明一个本地方法,该方法将在 C++ 中实现
public native void callCppFunction();
// 加载包含 C++ 实现的库
static {
System.loadLibrary("nativeLib");
}
public static void main(String[] args) {
Main main = new Main();
main.callCppFunction(); // 调用本地方法
}
}
// C++ 代码 (nativeLib.cpp)
#include <jni.h>
#include <iostream>
// 定义与 Java 方法对应的 C++ 函数
extern "C" JNIEXPORT void JNICALL
Java_Main_callCppFunction(JNIEnv *env, jobject /* this */) {
std::cout << "Hello from C++!" << std::endl;
}
Java 代码:
native 关键字用于声明一个本地方法,表示这个方法的实现不在 Java 中,而是在其他语言(如 C++)中。System.loadLibrary("nativeLib"); 用于加载包含 C++ 实现的动态链接库(例如 .dll 或 .so 文件)。库的名称为 nativeLib。main 方法中,创建 Main 类的实例并调用 callCppFunction 方法,该方法会触发 C++ 代码的执行。C++ 代码:
extern "C" 来防止 C++ 编译器对函数名进行修饰,确保与 Java 端的函数签名匹配。JNIEXPORT 和 JNICALL 是 JNI(Java Native Interface)宏,用于正确导出和调用本地方法。JNIEnv* env 是指向 JNI 环境的指针,提供了许多用于操作 Java 对象和调用 Java 方法的函数。jobject 是指向当前 Java 对象的引用(即 this),在静态方法中可以是 jclass。std::cout 用于输出信息到控制台。通过这种方式,Java 程序可以调用 C++ 编写的代码。
上一篇:java 日期加一天
下一篇:java hashmap 遍历
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站