下面以 Java 调用 C++ 的加法运算函数为例,作简单说明。
(使用 Android Studio 3 编译)java
建立独立目录存放 c++ 文件,例如 "app/src/main/cpp/add.cpp",内容以下c++
#include <jni.h> extern "C" JNIEXPORT jint JNICALL Java_com_example_liyi_demo_Util_add( JNIEnv *env, jobject, jint a, jint b ) { return a + b; }
被调用的函数命名必须是 "Java_<namespace>_<class>_<method>" ,此例表示
Java 包 com.example.liyi.demo 下,Util 类的 add 方法将关联此 c++ 函数。app
将上一步的 c++ 目录加入编译项。已 cmake 为例,将下面内容加入 CMakeLists.txt函数
add_library( native-util SHARED src/main/cpp/add.cpp )
这样可编译成 native-util.so 库。spa
实现 Util 类。将以下内容存成 src/main/java/Util.java 文件code
package com.example.liyi.demo; public class Util { static { System.loadLibrary(libname: "native-util"); } private native int add(int a, int b); public int java_add(int a, int b) { return add(a, b); } }