美文网首页
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