JNI 调用带有数组参数的 Java 方法

Liq*_*ing 3 java-native-interface

我正在尝试从 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); 
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*ael 5

您需要创建一个jintArray并将其内容复制placement到其中:

    jintArray arr = env->NewIntArray(2);
    env->SetIntArrayRegion(arr, 0, 2, placement);
    env->CallStaticVoidMethod(cls, mid2, arr); 
Run Code Online (Sandbox Code Playgroud)

有关这些功能的更多信息,请参阅文档。