JNI编程

作者: nwuezr | 来源:发表于2019-01-25 16:11 被阅读0次

JNI调用是指在Java代码中调用C代码,分以下几个步骤去做。

1. Java中用native关键字声明在C中实现的函数

camera.java

package cit;

public class camera {
    public native void openCamera(int index);
    public native void closeCamera();
}

2. 编译Java文件

用javac编译Java文件,-d选项指定生成class文件的目录
javac camera.java -d ../../bin

3. 生成C头文件

用javah生成C头文件,-classpath指定编译生成的class文件目录,然后指定Java的包名+类名
javah -classpath ../../bin cit.camera
运行后,在javah的执行目录生成cit_camera.h,内容如下

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class cit_camera */

#ifndef _Included_cit_camera
#define _Included_cit_camera
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     cit_camera
 * Method:    openCamera
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_cit_camera_openCamera
  (JNIEnv *, jobject, jint);

/*
 * Class:     cit_camera
 * Method:    closeCamera
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_cit_camera_closeCamera
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

4. 编写C文件并生成库文件

在C文件中实现Java_cit_camera_openCamera和Java_cit_camera_closeCamera,编译生成库文件libcitcamera.so,具体不再赘述。

5. 在Java文件中调用C函数

在Java中加载库文件,然后调用native函数即可,代码如下

public class camera {
    static {
        System.loadLibrary("citcamera");
    }
    public void fun() {
        openCamera(1);
    }
    public native void openCamera(int index);
    public native void closeCamera();
}

相关文章

  • JNI

    Android JNI编程—JNI基础 一天掌握Android JNI本地编程 快速入门 Android深入理解J...

  • 音视频从基础学起——JNI编程

    音视频开发的运用,是要学习JNI编程的。怎么样去学JNI?本篇我们就来学习JNI编程这门技术。 对于Java来说,...

  • JNI 入门

    基础知识 1 什么是JNI?JNI全称为:Java Native Interface。JNI 是本地编程接口,它使...

  • Java与CC++交互JNI编程

    JNI编程 [TOC] JNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如...

  • JNI编程

    JNI编程[TOC] JNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C...

  • JNI 编程

    JNI编程 JNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言、C+...

  • JNI

    JNI编程 JNI是一种本地编程接口。它允许运行在JAVA虚拟机中的JAVA代码和用其他编程语言,诸如C语言、C+...

  • Android安全---AndroidStudio3.0JNI编

    JNI介绍 官方介绍: 在编程领域,JNI (Java Native Interface,Java本地接口)是一种...

  • Android 添加JNI 开发能力

    JNI 与 NDK 区别JNI:JNI是一套编程接口,用来实现Java代码与本地的C/C++代码进行交互;NDK:...

  • JNI简介

    JNI和NDK? JNI (Java Native Interface)是一套编程接口,用来实现java代码和其他...

网友评论

      本文标题:JNI编程

      本文链接:https://www.haomeiwen.com/subject/gqimjqtx.html