Android ndk 如何从C/C++;有多个参数?
我有一个具有以下签名的Java方法: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
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
)