如何封装JNI 可以做一个test JNI的例子吗
时间: 2024-03-01 10:56:19 浏览: 74
JNI 测试样例
JNI(Java Native Interface)是Java平台提供的一种机制,用于在Java虚拟机(JVM)中调用本地(即非Java)应用程序。封装JNI可以将Java代码和C/C++代码进行结合,从而实现一些高效的、需要调用本地库的功能。下面是一个简单的test JNI的例子:
首先,我们需要编写一个简单的C/C++代码,用于实现一个加法函数:
```c++
#include <stdio.h>
#include "jni.h"
JNIEXPORT jint JNICALL Java_TestJNI_add
(JNIEnv *env, jobject obj, jint a, jint b)
{
return a + b;
}
```
接下来,我们需要在Java代码中声明native方法,并且使用Javah工具生成对应的头文件:
```java
public class TestJNI {
static {
System.loadLibrary("TestJNI");
}
public native int add(int a, int b);
}
```
运行Javah工具,生成对应的头文件TestJNI.h:
```
javah -classpath . TestJNI
```
在生成的头文件中,我们可以看到add函数的声明:
```c++
JNIEXPORT jint JNICALL Java_TestJNI_add(JNIEnv *, jobject, jint, jint);
```
最后,我们需要编写一个简单的Java测试程序:
```java
public class Main {
public static void main(String[] args) {
TestJNI testJNI = new TestJNI();
int result = testJNI.add(1, 2);
System.out.println("Result: " + result);
}
}
```
将这些代码放在一个项目中,编译并运行程序,即可得到输出结果:
```
Result: 3
```
这个例子只是一个简单的测试,你可以根据自己的需求,进一步封装JNI,实现更加复杂的功能。
阅读全文