java进阶干货

Java中使用JNI调用C++

2017-08-08  本文已影响0人  larQ

1,JNI是什么?

JNI即Java Native Interface(Java本地接口),是一个协议,主要作用为:实现Java调用c/c++代码(类库),或者C/C++调用Java代码

2,主要实现如下:

2.1, 首先在本地任意的一个目录下创建2各类JNI.java 和Test.java,我在D:\JNITest目录下创建了这两个文件

//JNI.java文件
public class JNI{
   //创建一个native接口方法,此方法在C++代码中实现
   public native int call();
   //静态代码块,加载由C++代码生成的.dll动态链接文件(.dll相当于Java中的jar包吧...)
   static{
       System.loadLibrary("JNIdll");
   }
}
//Test.java文件
public class Test{
    public static void main(String[] args){
        //创建JNI的对象call
        JNI call = new JNI();
        //调用call()方法;
        int i = call.call();
        //输出调用后的结果i
        System.out.println("调用Java Native Interface,返回:"+i);
    }
}

我的目录如下:


2.2,使用javac 编译JNI.java生成字节码文件JNI.class(需要安装配置java环境变量)并使用javah 编译刚生成的字节码文件得到JNI.h文件,具体操作如下:

2.3 编写C++代码(JNIdll.cpp文件)来实现JNI.java中的call()方法(native修饰的)

//JNIdll.cpp文件

#include<stdio.h>
#include<jni.h>
#include "JNI.h"

JNIEXPORT jint JNICALL Java_JNI_call
  (JNIEnv *, jobject){
      //实现代码
      int i = 777;
      return i;
}

2.4 使用C++编译器生成.dll动态链接文件

2.5 打开命令行,看图不说话...

上一篇 下一篇

猜你喜欢

热点阅读