通过JNI从c++应用程序调用Java中的c++回调
Calling a c++ callback from Java invoked from C++ application via JNI
我有一个C++应用程序,它需要与Java库接口。我想从Java端接收通知,所以它需要回调到C++应用程序。我发现了许多从C++调用Java函数的例子(这是简单的部分),以及从DLL导出的Java调用C/C++函数的例子。
到目前为止,我所发现的一切都是如何在Java应用程序中从外部C++函数调用Java回调。我需要相反的东西。
有了直接的C++,这当然很容易。我只需将一个函数指针传递给该类,该类将在需要时作为回调进行调用。当我调用Java函数时,我该如何做到这一点?
如果有一个比我在这里要求的更好的方法,那就是整个应用程序:
我的C++应用程序需要访问一个外部服务器,该服务器将数据流式传输回我的应用程序。访问API是一个基于Java的API。我目前的计划是构建一个Java包装器,它将处理所有API调用。这个包装器将使用JNI从我的C++应用程序中调用。当收到数据时,它会尽可能多地处理它,然后用调整后的数据通知我的C++应用程序。
总结一下我如何从Java类中调用C++函数回调,而Java类又是通过JNI从C++应用程序中调用的。没有可供Java使用的DLL。虽然如果需要的话,我可以制作一个,如果一切都能正常接口的话。
函数路径:C++应用程序->Java类库->C++回调函数
我找到了。环境类中有一个函数,名为"RegisterNatives"。有了这个,我可以在运行时为任何Java类注册C++回调。我试过了,结果和预期的一样。
相关文章:
- 在java中解决这段代码时面临循环中的问题
- 尝试用java代码编译和运行c++代码
- 在这种情况下,java对象是否可以调用本机函数
- 在java中读取c++字节的位字段
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 使用已使用 java 编码的 openssl 解码数据
- SWIG Java 在使用 -DSWIGWORDSIZE64 时将int64_t转换为 jlong
- Android Java USB for native cpp
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ equivalent to Java Map getOrDefault?
- C++ 中的 Java 样式枚举
- 是否有技术原因阻止 Java 中的 final C++ 像 const 一样严格?
- 加密在 Windows、C++ 和 Java 中传输中的数据
- Java从C++回调到C++回调
- 在 c++ 中模拟输入并在 JAVA 中读取它?
- 用C++包装 Java 库 (JNI)
- 使用 TreeSet Java 对反转进行计数
- 验证openssl c++中的签名,这是由JAVA DSA签名的?
- 如何通过 JNI 将 C 字符串表情符号传递给 Java
- 如何从保存在 Java 中C++的字节数组中读取数字?