简体   繁体   English

如何从JNI传递2个byte []到Java

[英]How can I pass 2 byte[] from JNI to Java

I have a java method, like this: 我有一个java方法,像这样:

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

In JNI I can reach the class and I can reach the method, but my parameter list is incorrect. 在JNI中,我可以访问类,可以访问方法,但是参数列表不正确。 I am trying to call the method like this: 我试图调用这样的方法:

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

I then get a NoSuchMethod exception at runtime. 然后,我在运行时得到了NoSuchMethod异常。

I followed multiple SO questions, including this one JNI - How to callback from C++ or C to Java? 我遵循了多个SO问题,包括一个JNI-如何从C ++或C回调到Java? , but I'm still stuck. ,但我仍然被卡住。

Any suggestions? 有什么建议么?

Thanks. 谢谢。

If you want to call back into Java, the implementation must be in Java. 如果要回叫Java,则实现必须使用Java。 You need 你需要

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

And to get the id of a static method you need to use "GetStaticMethodID". 要获取静态方法的ID,您需要使用“ GetStaticMethodID”。 Also to call it you will have to use "CallStaticVoidMethod()". 同样要调用它,您将必须使用“ CallStaticVoidMethod()”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM