来自 编程 2019-10-19 12:11 的文章
当前位置: 澳门太阳娱乐手机登录 > 编程 > 正文

未能加载文件或程序集,JNI使用方法

图片 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文件,还索要开展浓厚探寻。

参照文章:

本文由澳门太阳娱乐手机登录发布于编程,转载请注明出处:未能加载文件或程序集,JNI使用方法

关键词: