【发布时间】:2013-02-06 01:05:45
【问题描述】:
我有一个需要与 Java 库交互的 C++ 应用程序。我想从 Java 端接收通知,因此它需要回调 C++ 应用程序。我找到了很多关于从 C++ 调用 Java 函数(这是最简单的部分)和从 Java 调用从 DLL 导出的 C/C++ 函数的示例。
到目前为止,我发现的一切都是如何从 Java 应用程序中的外部 C++ 函数调用 Java 回调。我需要相反的。
使用直接的 C++,这当然很简单。我只需将一个函数指针传递给该类,该类会在需要时作为回调调用。当我改为调用 Java 函数时,我该怎么做?
如果有比我在这里要求的更好的方法是整体应用程序:
我的 C++ 应用程序需要访问外部服务器,该服务器会将数据流式传输回我的应用程序。访问 API 是基于 Java 的 API。我目前的计划是构建一个处理所有 API 调用的 Java 包装器。这个包装器将使用 JNI 从我的 C++ 应用程序中调用。当收到数据时,它会尽可能地处理它,然后将调整后的数据通知我的 C++ 应用程序。
总结一下如何从 Java 类调用 C++ 函数回调,而 Java 类又通过 JNI 从 C++ 应用程序调用。没有要加载的 DLL 供 Java 使用。虽然如果一切都可以正常连接,我可以根据需要制作一个。
函数路径:C++应用->Java类库->C++回调函数
【问题讨论】:
-
您是否已经设法完成“C++ 应用程序 -> Java”部分?
-
“没有要加载的 DLL 供 Java 使用。”.... 在没有 DLL 的情况下编写 JNI 将非常困难。准备好制作一个(并开始simple以首先关闭界面。)
-
我做了一些测试函数来验证加载 JNI 和调用 Java 类函数。这很容易。这是下一步——Java 回到我还不知道的 C++。
-
从简单开始:我完全同意,这就是我现在想要确定的——Java -> C++ 之间的接口。到目前为止,我发现的所有示例都是从 Java 应用程序调用 C++ 库。但是,这不是我想要做的。
标签: java c++ callback java-native-interface