快捷搜索:

您的位置:澳门新葡4473网站 > 新葡亰平台娱乐 > JNI使用方法

JNI使用方法

发布时间:2019-10-11 03:51编辑:新葡亰平台娱乐浏览(124)

    新葡亰平台娱乐 1

    JNI可以让我们在java代码中调用本地库的功能。

    revit二次开发中遇到的问题

    下面记录一下JNI简单的使用方法

    RevitAPIUI.dll 只能 Native Library 中执行; 脱离了Native Library,API是跑不起来的 。

    1. 创建java端接口

    新葡亰平台娱乐,检查程序流程:登录,配置,启动revit。

    在启动revit之前不能执行RevitAPI.dll和RevitAPIUI.dll的相关方法,

     1 public class JNIIterface { 2  3     // 导入最终生成的dll文件 4     static { 5         System.loadLibrary("JNIDemo"); 6     } 7  8     // 声明dll文件中实现的接口 9     public native int MyMethod();10     11     public native int add(int x, int y);12 }
    

    最后发现异常捕获,  MessageShow.Show(e);封闭的方法引用的RevitAPIUI中的内容。

      2. 生成接口对应的C的头文件

    删除或更换方法解决问题。

        上面创建的JNIIterface类,JNIIterface .class文件的路径:JNIDemobinbaseJNIIterface .class

     

        在工程目录下的bin目录下执行命令:javah -classpath . -jni base.JNIIterface

        然后会在JNIDemobin目录下生成base_JNIIterface.h文件

      3.使用visual studio编写接口的实现

        创建C工程,具体步骤如下:

          第一步:

          新葡亰平台娱乐 2

          第二步:

          新葡亰平台娱乐 3

          第三部:

          新葡亰平台娱乐 4

        导入需要的头文件

          将上面第二步生成的头文件,以及jdk根目录下include目录下的jni.h和

        include的win32目录下的jni_md.h文件拷贝到工程目录下(在创建的工程上面右键,然后点击倒数第二项就可以打开)

    新葡亰平台娱乐 5

        创建功能实现文件

          在工程目录下源文件上右键,然后点击-》,创建一个cpp文件

        并编写如下代码:

     1 #include "base_JNIIterface.h" 2 #include "jni.h" 3 #include <stdio.h> 4  5 JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod 6   (JNIEnv *, jobject){ 7       printf("成功实现JNI测试DEMO"); 8       return 0; 9 }10 11 JNIEXPORT jint JNICALL Java_base_JNIIterface_add12   (JNIEnv *, jobject, jint a, jint b){13       return a + b;14 }
    

      4.生成dll文件

        在工程目录中的「解决方案」上右键,选择属性,然后如下图所示构成项目

          新葡亰平台娱乐 6

        然后编译工程后,会在工程目录下的Release目录下成成dll文件

          新葡亰平台娱乐 7

      5. 将dll文件配置到java工程

          首先向dll文件放在java工程根目录下的lib目录下

          然后按照如下步骤将dll文件作为Native Library添加进工程

            新葡亰平台娱乐 8

        编辑上图所示的Native Library Location,然后在弹出的界面选择Native Library所在的文件夹:

            新葡亰平台娱乐 9

        6.编写测试类,检证JNI是否成功应用

     1 public class HelloJNI { 2  3     public static void main(String[] args) { 4         JNIIterface hw = new JNIIterface(); 5         int t = hw.add(3, 7); 6         int s = hw.MyMethod(); 7         System.out.println; 8         System.out.println; 9     }10 }
    

        运行后的测试结果如下:

    100成功??JNI??DEMO
    

    上面就是记录了使用JNI的最基本步骤。

    对于如何使用已经写好的第三方dll文件的功能,比如系统的dll文件,还需要进行深入探索。

    参考文章:

    本文由澳门新葡4473网站发布于新葡亰平台娱乐,转载请注明出处:JNI使用方法

    关键词: