要编译JNI C库,你需要遵循以下步骤:
1. 编写Java类,声明native方法。例如,创建一个名为`NativeDemo.java`的文件,内容如下:
```java
public class NativeDemo {
static {
System.loadLibrary("native-lib");
}
public native String getHello();
public static void main(String[] args) {
NativeDemo demo = new NativeDemo();
String result = Hello();
System.out.println("Hello from native library: " + result);
}
}
```
2. 使用`javac`命令编译Java类:
```bash
javac NativeDemo.java
```
3. 使用`javah`命令生成C头文件:
```bash
javah NativeDemo
```
这将生成一个名为`NativeDemo.h`的头文件。
4. 编写C源文件(例如`native-lib.c`),实现在头文件中声明的native方法。例如:
```c
#include <jni.h>system的头文件
#include "NativeDemo.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_NativeDemo_getHello(JNIEnv *env, jobject obj) {
const char *result = "Hello from native library!";
return (*env)->NewStringUTF(env, result);
}
```
5. 使用C编译器(如GCC)编译C源文件,并链接生成动态库(如`libnative-lib.so`):
```bash
gcc -shared -fPIC -o libnative-lib.so native-lib.c -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
```
注意:请将`${JAVA_HOME}`替换为你的Java安装目录。
6. 运行Java程序:
```bash
java NativeDemo
```
输出结果应为:
```
Hello from native library: Hello from native library!
```
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论