java jni调用so动态链接库详细步骤

野性酷女 2023-10-06 18:17 102阅读 0赞

jna 调用so库:https://blog.csdn.net/u014644574/article/details/118608423

1、安装32位的jdk

执行下面代码不报错为32位的jdk

  1. java -d32 -version

2、安装mingw

安装后执行下面代码不报错。

  1. gcc -v

下载地址:https://sourceforge.net/projects/mingw/

安装过程参考:https://blog.csdn.net/weixin_40571965/article/details/105174015

安装失败,搞个梯子就可以了。

3、d盘根目录创建HelloWorld.java

有中文记得改成gbk编码

  1. class HelloWorld
  2. {
  3. // 载入 so 动态链接库
  4. static{
  5. //System.loadLibrary("HelloWorld");//dll方式
  6. System.load("d:/HelloWorld.so");//so方式
  7. }
  8. // 声明 so 库中的方法
  9. public native void myprint();
  10. // java 类入口函数
  11. public static void main(String[] args)
  12. {
  13. new HelloWorld().myprint();
  14. }
  15. }

编译生成Class文件HelloWorld

  1. javac HelloWorld.java

生成文件头HelloWorld.h

  1. javah -jni HelloWorld

4、d盘根目录创建HelloWorld.c

  1. #include "HelloWorld.h"
  2. JNIEXPORT void JNICALL
  3. Java_HelloWorld_myprint(JNIEnv *env,jobject obj){
  4. printf("Hello World !\n");
  5. return;
  6. }

5、编译本地C方法生成类库dll文件或者so文件

生成.so文件

  1. 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文件

  1. 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

  1. java HelloWorld

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JNI调用dllso

    一、应用场景         如果想用Java调用C或C++程序,前提是给定了C或C++的动态库dll(Windows)或so(Linux)文件和函数头文件说明,根据头文