windows下生成jni的dll文件(java native方法)

  1. 编写java类, 类中有一个native方法。

    public class Hello {
        public native void sayHello();
        static {
            System.loadLibrary("HelloImpl");//加载生成的dll文件
        }
    
        public static void main(String[] args) {
            new Hello().sayHello();
        }
    }
  2. 生成.class文件

    执行命令: javac Hello.java
  3. 生成.h文件

    执行命令: javah Hello

    .h文件的内容:
    这里写图片描述

  4. 编写方法的实现 HelloImpl.c
    这里写图片描述

  5. 下载安装mingw_64位, 并将其安装目录配置到系统环境变量
    mingw_64位最新下载地址:mingw_64位最新版下载地址
    该软件的作用是在windows系统使用gcc和g++命令,对c文件和c++文件进行编译,生成.o文件, 进而生成.dll文件。64位的只能生成64位的dll文件。若要生成32位的dll文件,请下载32位的mingw.
    mingw_32最新版下载地址:mingw_32位最新版下载地址
    安装完后将{minw安装目录}\mingw64\bin放到path即可。

  6. 生成.o文件

    执行命令: gcc -c -I"%JAVA_HOME%\include" - I"%JAVA_HOME%\include\win32" HelloImpl.c

    执行完上述命令会生成HelloImpl.o文件。

  7. 生成dll文件

    执行命令: gcc -Wl,--add-stdcall-alias -shared -o HelloImpl.dll HelloImpl.o
  8. 执行java命令, 验证是否成功。

    执行命令: java Hello

    执行命令: java -Djava.library.path=.
         Hello

    如果没有dll动态链接库,输出结果是:
    错误的结果
    若存在动态连接库,输出结果是:
    正确的结果

The End.

你可能感兴趣的:(java)