当前位置:首页 > 百科大全

jni java编程(JNI经典接口使用书籍教程)

2022-11-01 15:33:47

  1,什么是JNI。

  JNI是Java Native Interface的缩写,通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。

  2,编写Java接口。

  编写如下测试代码。通过C++编译的DLL计算两个数字相加,得到结果。

  package com.opencv.test;

  public class JniTest{

  public static native int JNI_ADD(int a,int b);

  }

  先编译以上代码,在生成class的文件夹里执行命令:

  【javah-class[项目所在目录][包名.类名]】如下:

  javah-classpath E:\zbxt\mytest\src\main\java com.opencv.test.JniTest

  执行完后会在目录下生成一个.h文件[com_opencv_test_JniTest.h]。

  4、编写DLL程序。

  打开VS新建项目选择Win32项目。

  确认后点击下一步应用类型选择DLL。

  完成后生成如下项目文件。

  复制jdk下的JNI依赖头文件文件[jni.h][jni_md.h]到vs工程目录下。

  (注:jni.h在jdk的include目录下,jni_md.h在jdk的include\win32目录下)

  在复制编译class生成的[com_opencv_test_JniTest.h]头文件到vs工程目录下,

  在VS资源管理器里右键头文件-添加-现有项--找到复制在工程目录下的三个头文件。

  添加完成后如上图所示

  打开com_opencv_test_JniTest.h头文件把#include<jni.h>改成#include"jni.h"。

  打开项目自动生成的源程序cpp代码[testJavaDll.cpp]引入头文件[com_opencv_test_JniTest.h]。复制[com_opencv_test_JniTest.h]头文件里的java接口生成的[

  Java_com_opencv_test_JniTest_JNI_1ADD]接口函数,粘贴到项目自动生成的源程序cpp代码[testJavaDll.cpp]中,并在其中修改函数如下图所示。

  到这里dll已经写好,接下来点击生成-->生成解决方案,提示以下成功信息就代表dll编译成功。

  可以看到dll生成的位置:

  5、java调用dll进行测试。

  加载DLL方式一:把DLL放在JDK的安装目录的jre/bin目录下如:[c:\jdk1.8.0_202\jre\bin]。

  加载DLL方式二:在把DLL放在项目的resources目录下,为了区分新建一个lib目录,如图所示。

  在打开Project structure--libraries-点击加号--选择java把resources/lib目录添加进去,

  再点击modules勾选lib。

  编写以下代码验证DLL。

  package com.opencv.test;

  public class JniTest{

  public static native int JNI_ADD(int a,int b);

  static{

  System.loadLibrary("testJavaDll");

  System.out.println("加载dll成功");

  }

  public static void main(String[]args){

  int add_result=JNI_ADD(1,2);

  System.out.println("计算结果:"+add_result);

  }

  }

  运行结果

免责声明:本文由用户上传,如有侵权请联系删除!