java - 如何将 2 byte[] 从 JNI 传递给 Java

标签 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? ,但我仍然卡住了。

有什么建议吗?

谢谢。

最佳答案

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

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

要获取静态方法的 ID,您需要使用“GetStaticMethodID”。此外,要调用它,您还必须使用“CallStaticVoidMethod()”。

关于java - 如何将 2 byte[] 从 JNI 传递给 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952035/

相关文章:

java - NCSA 请求处理程序在 pax-web 1.1.4 中不起作用

JavaFX WebEngine 设置文档位置

java - 在java中识别一个新设备

java - 在 Windows XP 上使用 JNI Cygwin 代码退出时出现访问冲突 0xc0000005

java.util.concurrent.ExecutionException : java. lang.NullPointerException 错误

c++ - 生成要在 Qt 中打印的表单

c++ - [decl.constexpr].5 到底是什么意思?

c++ - 确保 std::string 正确对齐

c - JNI : calling C from java

java - 在 C++ 中使用 Java JAR 库