Java可以通过JNI(Java Native Interface)调用C语言的so动态库。
以下是一些基本步骤:
1. 编写C语言代码并编译成so动态库文件。
2. 在Java中定义native方法,声明使用的C语言函数。
3. 使用javac编译Java源代码,生成class文件。
4. 使用javah命令生成头文件。
5. 实现头文件中声明的函数,并将其编译成so动态库文件。
6. 在Java程序中加载so动态库文件,并调用native方法。
示例代码:
C语言代码:
```c
#include
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) {
printf("Hello World!\n");
}
```
Java代码:
```java
public class HelloWorld {
static {
System.loadLibrary("hello"); // 加载so动态库文件
}
public native void print(); // 声明native方法
public static void main(String[] args) {
new HelloWorld().print(); // 调用native方法
}
}
```
生成头文件:
```
javah -jni HelloWorld
```
编译C语言代码:
```
gcc -fPIC -shared -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux HelloWorld.c -o libhello.so
```
编译Java源代码:
```
javac HelloWorld.java
```
运行Java程序:
```
java HelloWorld
```