我有一个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?,但我仍然坚持。
有什么建议吗?
感谢。
答案 0 :(得分:1)
如果要回调Java,则实现必须使用Java。你需要
public static void receiveCallback(byte[] value1, byte[] value2) {
// do something with value1 and value2
}
要获得静态方法的id,您需要使用" GetStaticMethodID"。另外要调用它,你必须使用" CallStaticVoidMethod()"。