JNI 使用数组参数调用 Java 方法
JNI Calling Java Method With Array Parameter
我正在尝试从 cpp 调用 java 方法。我似乎没有问题使用字符串、int 等。我遇到的一个问题是传递一个 int 数组参数。有人可以告诉我我做错了什么吗?如果这是一个非常小的错误,我深表歉意,我完全错过了。
JNIEXPORT void JNICALL
Java_basket_menu_MenusActivity_submitInfo(JNIEnv *, jclass){
int placement[2] = { 5, 4 };
jclass cls = env->FindClass("basket/menu/MenusActivity");
jmethodID mid2 = env->GetStaticMethodID(cls, "PlaceMe", "([I)V");
env->CallStaticVoidMethod(cls, mid2, placement);
}
您需要创建一个jintArray
并将placement
的内容复制到其中:
jintArray arr = env->NewIntArray(2);
env->SetIntArrayRegion(arr, 0, 2, placement);
env->CallStaticVoidMethod(cls, mid2, arr);
有关这些函数的更多信息,请参阅 the documentation。
我正在尝试从 cpp 调用 java 方法。我似乎没有问题使用字符串、int 等。我遇到的一个问题是传递一个 int 数组参数。有人可以告诉我我做错了什么吗?如果这是一个非常小的错误,我深表歉意,我完全错过了。
JNIEXPORT void JNICALL
Java_basket_menu_MenusActivity_submitInfo(JNIEnv *, jclass){
int placement[2] = { 5, 4 };
jclass cls = env->FindClass("basket/menu/MenusActivity");
jmethodID mid2 = env->GetStaticMethodID(cls, "PlaceMe", "([I)V");
env->CallStaticVoidMethod(cls, mid2, placement);
}
您需要创建一个jintArray
并将placement
的内容复制到其中:
jintArray arr = env->NewIntArray(2);
env->SetIntArrayRegion(arr, 0, 2, placement);
env->CallStaticVoidMethod(cls, mid2, arr);
有关这些函数的更多信息,请参阅 the documentation。