资讯专栏INFORMATION COLUMN

Android Java 如何调用自己的 c++ 的类库

Fundebug / 663人阅读

摘要:如何调用自己的的类库下面以调用的加法运算函数为例,做简单说明。使用编译首先编译类库创建独立目录存放文件,例如,内容如下被调用的函数命名必须是,此例表示包下,类的方法将关联此函数。将上一步的目录加入编译项。在中调用实现类。

Android Java 如何调用自己的 C++ 的类库

下面以 Java 调用 C++ 的加法运算函数为例,做简单说明。
(使用 Android Studio 3 编译)

首先编译 c++ 类库

创建独立目录存放 c++ 文件,例如 "app/src/main/cpp/add.cpp",内容如下

#include 
extern "C" JNIEXPORT jint
JNICALL
Java_com_example_liyi_demo_Util_add(
    JNIEnv *env,
    jobject,
    jint a,
    jint b
) {
  return a + b;
}

被调用的函数命名必须是 "Java___" ,此例表示
Java 包 com.example.liyi.demo 下,Util 类的 add 方法将关联此 c++ 函数。

将上一步的 c++ 目录加入编译项。已 cmake 为例,将下面内容加入 CMakeLists.txt

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

这样可编译成 native-util.so 库。

在 Java 中调用

实现 Util 类。将如下内容存成 src/main/java/Util.java 文件

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);
  }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69220.html

相关文章

  • 【精致Java教程】01:认识Java

    摘要:小组最开始由两名程序员和,一名工程师三人组成,后续有人员扩充。其中是最具代表性的人物,如今被称为语言之父。后于年月日对外公布这门编程语言,标志着的诞生。官方宣称全世界有万开发者。数据显示目前处于榜首。 欢迎你来到Java的世界,作为Java的第一篇文章不可免俗的要做一次介绍,这些东西往往比较枯燥所以我尽可能写的有故事趣味一点。对于初学者历史或者特性的东西浏览一遍有所了解即可,即使不知所...

    keithxiaoy 评论0 收藏0
  • 类加载器以及双亲委派模型

    摘要:宗主引导类加载器。双亲委派模型是如何使用的我们在自定义加载器中查找是否有需要加载的文件,如果已经加载过,直接返回字节码。 作者:毕来生微信:878799579 1、小故事理解类加载器以及双亲委派模型 首先我们来描述一个小说场景,通过这个场景在去理解我们相关的类加载器的执行以及双亲委派模型。 上古时代有逍遥派和万魔宗两个宗派,互相对立。逍遥派比万魔门更加强势。巅峰战力更高。 有一天万魔宗...

    曹金海 评论0 收藏0
  • java类加载相关

    摘要:标准扩展类加载器,它负责加载或由系统变量指定位置中的类库加载到内存中。系统类加载器,它负责将类路径中的类库加载到内存。 类加载机制大家应该已经非常熟悉了,采取双亲委派机制,当加载一个类时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成加载任务,就成功返回;如果父类无法加载,才由自己加载。 双亲委派机制的作用:防止内存中出现多份相同的字节码。 其他规则:1.隐式加载:...

    el09xccxy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<