如何从JNI向Java传递2个字节[]

时间:2015-03-09 21:25:20

标签: java c++ java-native-interface

我有一个java方法,如下所示:

public static native void receiveCallback(byte[] value1, byte[] value2);

在JNI中,我可以访问该类,但我可以访问该方法,但我的参数列表不正确。我试图像这样调用这个方法:

jmethodID testJavaMethod = (java_environment)->GetMethodID(clazz, "receiveCallback","([B[B");

然后我在运行时获得NoSuchMethod异常。

我关注了多个SO问题,包括这个问题JNI - How to callback from C++ or C to Java?,但我仍然坚持。

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

如果要回调Java,则实现必须使用Java。你需要

public static void receiveCallback(byte[] value1, byte[] value2) {
    // do something with value1 and value2
}

要获得静态方法的id,您需要使用" GetStaticMethodID"。另外要调用它,你必须使用" CallStaticVoidMethod()"。