gpt4 book ai didi

android - 如何从 JNI 调用带有 int 参数的 Java 函数

转载 作者:搜寻专家 更新时间:2023-11-01 08:00:41 25 4
gpt4 key购买 nike

我在 Activity 中有一个静态 Java 函数。这个函数有 int 参数。我想从 JNI 调用这个函数。我使用下面的代码调用,但我不知道如何传递 int 参数:

在 Java 中:

public static void updateTopScoreLeaderboard(int score) {
Log.i("", "updateTopScoreLeaderboard " + score);
}

在 JNI 中:

if (JniHelper::getStaticMethodInfo(methodInfo, "com/nch/myApp/MyActivity", "updateTopScoreLeaderboard", "()V"))
{
methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID);
}
methodInfo.env->DeleteLocalRef(methodInfo.classID);

如果 Java 函数没有参数,该代码运行良好。但在这种情况下(具有 int 参数),它不起作用。

最佳答案

您需要更改方法签名以匹配 int 参数,因此它是 (I)V 而不是 ()V,并将您的 int 参数添加到方法调用:

int myInt = 0;

if (JniHelper::getStaticMethodInfo(methodInfo, "com/nch/myApp/MyActivity", "updateTopScoreLeaderboard", "(I)V"))
{
methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID, myInt );
}
methodInfo.env->DeleteLocalRef(methodInfo.classID);

关于android - 如何从 JNI 调用带有 int 参数的 Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com