java jni调用so动态链接库详细步骤
jna 调用so库:https://blog.csdn.net/u014644574/article/details/118608423
1、安装32位的jdk
执行下面代码不报错为32位的jdk
java -d32 -version
2、安装mingw
安装后执行下面代码不报错。
gcc -v
下载地址:https://sourceforge.net/projects/mingw/
安装过程参考:https://blog.csdn.net/weixin_40571965/article/details/105174015
安装失败,搞个梯子就可以了。
3、d盘根目录创建HelloWorld.java
有中文记得改成gbk编码
class HelloWorld
{
// 载入 so 动态链接库
static{
//System.loadLibrary("HelloWorld");//dll方式
System.load("d:/HelloWorld.so");//so方式
}
// 声明 so 库中的方法
public native void myprint();
// java 类入口函数
public static void main(String[] args)
{
new HelloWorld().myprint();
}
}
编译生成Class文件HelloWorld
javac HelloWorld.java
生成文件头HelloWorld.h
javah -jni HelloWorld
4、d盘根目录创建HelloWorld.c
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_myprint(JNIEnv *env,jobject obj){
printf("Hello World !\n");
return;
}
5、编译本地C方法生成类库dll文件或者so文件
生成.so文件
gcc -Wl,--add-stdcall-alias -shared -IC:\jdk1.8.0_211\include -IC:\jdk1.8.0_211\include\win32 -o HelloWorld.so HelloWorld.c
或者生成.dll文件
gcc -Wl,--add-stdcall-alias -shared -IC:\jdk1.8.0_211\include -IC:\jdk1.8.0_211\include\win32 -o HelloWorld.dll HelloWorld.c
6、运行HelloWorld.class
java HelloWorld
还没有评论,来说两句吧...