美文网首页
JNI 开发流程

JNI 开发流程

作者: 伊泽瑞额 | 来源:发表于2019-03-23 19:19 被阅读0次
  • 什么是JNI

JNI (Java Native Interface) 是 Java 调用c/c++ ,c/c++ 调用java de 一套 Api。

  • 流程

1.编写native 方法

package amn;

public class JniTest {
    
    // 1.编写native 方法
    public native static String getStringFromC();

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

2.进入src 目录,用javah 命令,生成 .h头文件

Microsoft Windows [版本 10.0.17134.648]
(c) 2018 Microsoft Corporation。保留所有权利。

C:\Users\Amn>cd F:\workplace\amn\src

C:\Users\Amn>f:

F:\workplace\amn\src>javah amn.JniTest

F:\workplace\amn\src>

刷新后 得到.h文件:


image.png

3.复制 .h头文件到cpp工程中


image.png

然后在c 工程中点击头文件 --添加—> 现有项 选中 .h文件 打开发现爆红


image.png

4.复制jni.h 和jni_md.h文件到cpp工程中解决上述问题

  • 5 实现.h 文件中声明的函数
#include "amn_JniTest.h"
//函数实现
JNIEXPORT jstring JNICALL Java_amn_JniTest_getStringFromC(JNIEnv  *env , jclass jsls) {
    //将c d的字符串转成一个java 字符串
    return (*env)->NewStringUTF(env,"c String");
}

  • 6.生成一个dll 文件 给java 调用,进入配置管理器 因为是64操作系统选择64 平台
image.png

点击生成---->生成解决方案 从而生成dll文件

  • 7.配置dll 文件所在目录到环境变量 不然java 加载动态库的时候找不到
image.png
image.png
    1. Java 加载动态库 并且调用 c 的方法
package amn;

public class JniTest {
    public native static String getStringFromC();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
     String text=getStringFromC();
     System.out.println(text);
    }
    
    //加载dll 动态库
    static {
        
        System.loadLibrary("Jni_study");
    }

}
  • 9 输出结果:


    image.png

相关文章

网友评论

      本文标题:JNI 开发流程

      本文链接:https://www.haomeiwen.com/subject/ctnsvqtx.html