写一个jni demo
时间: 2024-01-20 12:03:51 浏览: 24
当您在Java程序中需要调用C/C++代码时,可以使用Java Native Interface(JNI)来实现。下面是一个简单的JNI示例,演示了如何将Java方法与C函数相互调用:
1. 创建一个Java类,例如"JNIDemo.java",其中包含您想要调用的本地方法:
```java
public class JNIDemo {
// 本地方法声明
public native void sayHello();
// 加载本地库
static {
System.loadLibrary("jni_demo"); // 加载名为"jni_demo"的本地库
}
// 测试
public static void main(String[] args) {
JNIDemo demo = new JNIDemo();
demo.sayHello(); // 调用本地方法
}
}
```
2. 在命令行中使用`javac`编译Java类:`javac JNIDemo.java`。
3. 生成C头文件,可以使用`javah`工具:`javah JNIDemo`。这将生成名为"JNIDemo.h"的头文件。
4. 创建一个C源文件,例如"jni_demo.c",实现您在Java中声明的本地方法:
```c
#include <stdio.h>
#include "JNIDemo.h"
JNIEXPORT void JNICALL Java_JNIDemo_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");
}
```
5. 在命令行中使用C编译器编译C源文件,并生成共享库文件(DLL或SO):
- 对于Windows(使用MinGW):`gcc -shared -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" jni_demo.c -o jni_demo.dll`
- 对于Linux/Mac:`gcc -shared -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" jni_demo.c -o libjni_demo.so`
注意:请将`$JAVA_HOME`替换为您Java安装的实际路径。
6. 运行Java程序:`java JNIDemo`。您将看到输出:"Hello from C!"。
这是一个简单的JNI示例,演示了如何在Java和C之间进行方法调用。您可以根据自己的需求扩展和定制此示例。希望对您有帮助!