JNI创建加载Android的类-创建对象-调用方法

#include <jni.h>
#include <iostream>
 
JNIEXPORT void JNICALL
Java_YourPackageName_YourClass_createExample(JNIEnv *env, jobject) {
    // 查找Example类
    jclass cls = env->FindClass("com/example/Example");
    if (cls == NULL) {
        return; // 类未找到
    }
 
    // 获取Example类的构造函数的ID
    jmethodID constructorMID = env->GetMethodID(cls, "<init>", "(Ljava/lang/String;)V");
    if (constructorMID == NULL) {
        return; // 构造函数未找到
    }
 
    // 创建字符串对象
    jstring message = env->NewStringUTF("Hello from JNI!");
    if (message == NULL) {
        return; // 字符串创建失败
    }
 
    // 使用构造函数ID创建Example类的实例
    jobject exampleObj = env->NewObject(cls, constructorMID, message);
    if (exampleObj == NULL) {
        return; // 对象创建失败
    }
 
    // 获取printMessage方法的ID
    jmethodID printMID = env->GetMethodID(cls, "printMessage", "()V");
    if (printMID == NULL) {
        return; // 方法未找到
    }
 
    // 调用printMessage方法
    env->CallVoidMethod(exampleObj, printMID);
 
    // 释放本地引用
    env->DeleteLocalRef(cls);
    env->DeleteLocalRef(message);
    env->DeleteLocalRef(exampleObj);
}
public class Example {
    private String str;
    public Example(String ex){
        this.str = ex;
    }

    public void printMessage(String message){
        System.out.println(message);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值