Android Java 如何調用本身的 c++ 的類庫

Android Java 如何調用本身的 C++ 的類庫

下面以 Java 調用 C++ 的加法運算函數爲例,作簡單說明。
(使用 Android Studio 3 編譯)java

首先編譯 c++ 類庫

  1. 建立獨立目錄存放 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

  2. 將上一步的 c++ 目錄加入編譯項。已 cmake 爲例,將下面內容加入 CMakeLists.txt函數

    add_library(
      native-util
      SHARED
      src/main/cpp/add.cpp )

    這樣可編譯成 native-util.so 庫。spa

在 Java 中調用

  1. 實現 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);
      }
    }
相關文章
相關標籤/搜索