我的问题是:是否有任何好的解决方案来编写一个接收变量参数的包装函数,可以使用这些参数,但也可以将它们传递给任何 jni callmethod-function?我已经尝试过诸如可变参数函数之类的东西。我已经设法从函数接收变量参数,但我没有设法将这些变量参数传递给任何进一步的 jni 方法函数。我真的无法在 Internet 上找到有关此主题的帮助。希望你能帮助我。
void convertParameterString(JNIEnv *env,... ){
using namespace std;
va_list args;
va_start(args,env);
jclass cls2 = env->FindClass("CPPJava");//de/xcc/jnitest/JNITest"); // try to find the class
if(cls2 == nullptr) {
cerr << "ERROR: class not found !";
}
else { // if class found, continue
// rerun object construction and method call
jmethodID ctor = env->GetMethodID(cls2, "<init>", "()V"); // FIND AN OBJECT CONSTRUCTOR
if(ctor == nullptr) {
cerr << "ERROR: constructor not found !" << endl;
}
else {
cout << "Object succesfully constructed !" << endl;
jobject myo = env->NewObject(cls2, ctor); // CREEATE OBJECT
if(myo) { // IF OBJECT CREATED EXECUTE METHOD
jmethodID show = env->GetMethodID(cls2, "getString", "(I)V");
if(show == nullptr)
cerr << "No showId method !!" << endl;
else env->CallVoidMethod(myo,show,args);
cout << "===End of call to java===========" << endl;
}
}
}
}