Android ndk 如何从C/C++;有多个参数?

Android ndk 如何从C/C++;有多个参数?,android-ndk,java-native-interface,Android Ndk,Java Native Interface,我有一个具有以下签名的Java方法: public static boolean someMethod(Activity activity, int param1, int param2) 在得到它的jmethodID后,如何从C/C++调用它?我知道CallStaticBooleanMethodV需要va_list,但我如何创建它呢 类似地,CallStaticBooleanMethod需要一个jvalue数组,但我无法创建它,例如,以下操作不起作用: jvalue args[] = {ac

我有一个具有以下签名的Java方法:

public static boolean someMethod(Activity activity, int param1, int param2)
在得到它的
jmethodID
后,如何从C/C++调用它?我知道
CallStaticBooleanMethodV
需要
va_list
,但我如何创建它呢

类似地,
CallStaticBooleanMethod
需要一个
jvalue
数组,但我无法创建它,例如,以下操作不起作用:

jvalue args[] = {activity, param1, param2};

CallStaticMethod例程CallStaticMethodA例程 CallStaticMethodV例程NativeType CallStaticMethod(JNIEnv*env、jclass clazz、jmethodID、, ...);

NativeType CallStaticMethodA(JNIEnv*env,jclass clazz, jmethodID,jvalue*args)

NativeType CallStaticMethodV(JNIEnv*env,jclass clazz, jmethodID,va_列表参数)

对于函数,调用它的最简单方法是使用第一个选项(
CallStaticBooleanMethod
)。您的参数只是附加到类指针和方法id后面的函数调用

jobject * instancePtr = NULL;  //assigned to the 
                             //instance of your "Activity" class.
jint param1, param2;  //assign your integer values 
                      //appropriately( jint = int )
jboolean result = env->CallStaticBooleanMethod( myClass, methodID, instancePtr, param1, param2 );
如果您当前已经有一个变量参数列表(即,您的函数被声明为
doStuff(…)
),并且您希望在上调用这些变量,那么您只需要调用第三个函数(
CallStaticXXXMethodV