首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从JNI在Android上调用非静态方法

从JNI在Android上调用非静态方法的步骤如下:

  1. 在Java代码中定义一个本地方法,该方法将调用C++代码。
代码语言:java
复制
public class MainActivity extends AppCompatActivity {
    // 声明本地方法
    public native String callCppMethod(String name);

    // 加载库文件
    static {
        System.loadLibrary("native-lib");
    }

    // ...
}
  1. 使用JNI C++头文件,并实现本地方法。
代码语言:cpp
复制
#include <jni.h>
#include "MainActivity.h"

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_callCppMethod(JNIEnv *env, jobject obj, jstring name) {
    // 获取Java字符串
    const char *name_str = env->GetStringUTFChars(name, NULL);

    // 调用C++方法
    std::string result = callCppMethod(name_str);

    // 释放Java字符串
    env->ReleaseStringUTFChars(name, name_str);

    // 返回结果
    return env->NewStringUTF(result.c_str());
}
  1. 在C++代码中实现非静态方法。
代码语言:cpp
复制
#include<iostream>
#include<string>

std::string callCppMethod(const std::string &name) {
    std::string result = "Hello, ";
    result += name;
    return result;
}
  1. 编译C++代码,生成动态库文件。
代码语言:sh
复制
$ g++ -shared -fPIC -o libnative-lib.so MainActivity.cpp
  1. 将动态库文件放入Android项目的src/main/jniLibs目录下。
  2. 在Android项目中调用本地方法。
代码语言:java
复制
// 调用本地方法
String result = callCppMethod("JNI");

以上就是从JNI在Android上调用非静态方法的步骤。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分16秒

34.尚硅谷_JNI_C 调用 Java-回调静态方法.avi

10分30秒

33.尚硅谷_JNI_C 调用 Java 方法-String 参数.avi

25分22秒

31.尚硅谷_JNI_C 调用 Java 方法-返回值.avi

10分30秒

10.尚硅谷_JNI_在单独方法中互换-地址.avi

21分19秒

day10_面向对象(上)/16-尚硅谷-Java语言基础-this调用属性和方法

2分25秒

ICRA 2021|VOLDOR实时稠密非直接法SLAM系统

2分7秒

建筑工地视频监控系统

15分5秒

MySQL 高可用工具 - MHA-Re-Edition 复刻版

领券