Android Java调用自己C++类库的实例讲解

作者:李毅 时间:2023-06-16 19:09:17 

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

下面以 Java 调用 C++ 的加法运算函数为例,做简单说明。

(使用 Android Studio 3 编译)

首先编译 c++ 类库

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


#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++ 函数。

将上一步的 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://segmentfault.com/a/1190000014594778

标签:android,java,c++,类库
0
投稿

猜你喜欢

  • Java多线程run方法中直接调用service业务类应注意的问题及解决

    2021-12-28 19:51:46
  • C#读写文件的方法汇总

    2022-03-01 04:41:41
  • Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动

    2023-09-21 00:16:18
  • AndroidStudio报错Emulator:PANIC:Cannot find AVD system path. Please define ANDROID_SDK_ROOT(解决方案)

    2023-11-27 01:33:28
  • java并发编程专题(一)----线程基础知识

    2021-10-30 00:28:42
  • java 流与 byte[] 的互转操作

    2023-06-26 11:25:46
  • 合成聚合复用原则_动力节点Java学院整理

    2023-06-27 22:05:20
  • C#清除WebBrowser中Cookie缓存的方法

    2022-01-13 20:01:08
  • 利用C#代码实现图片旋转360度

    2022-04-11 05:24:38
  • Java中joda日期格式化工具的使用示例

    2023-03-01 11:49:10
  • Spring Security中的Servlet过滤器体系代码分析

    2023-03-23 19:05:34
  • 详解Servlet3.0新特性(从注解配置到websocket编程)

    2023-08-08 14:29:48
  • 5分钟用C#实现串口助手

    2022-01-20 09:43:00
  • 详解Springboot自定义异常处理

    2021-11-04 17:15:12
  • 怎样使用PowerMockito 测试静态方法

    2022-06-18 08:28:59
  • Spring Security OAuth2认证授权示例详解

    2022-09-11 19:45:47
  • Java多线程编程之读写锁ReadWriteLock用法实例

    2021-10-13 17:01:14
  • SpringBoot Redis用注释实现接口限流详解

    2022-03-15 17:40:55
  • java 重定义数组的实现方法(与VB的ReDim相像)

    2022-08-09 23:09:25
  • C#操作注册表的方法详解

    2022-03-09 14:57:14
  • asp之家 软件编程 m.aspxhome.com