繁体   English   中英

从Java调用C ++应用程序通过JNI调用c ++回调

[英]Calling a c++ callback from Java invoked from C++ application via JNI

我有一个需要与Java库接口的C ++应用程序。 我想从Java端收到通知,因此需要回调到C ++应用程序。 我发现了很多关于从C ++调用Java函数的例子(这是一个简单的部分),并从Java调用从Java导出的C / C ++函数。

到目前为止,我发现的一切都是如何从Java应用程序中的外部C ++函数调用Java回调。 我需要相反的。

使用直接C ++,这当然很简单。 我只是将一个函数指针传递给该类,该类将在需要时调用为回调函数。 当我改为调用Java函数时,我该怎么做?

如果有一个更好的方式,那么我要求的是整个应用程序:

我的C ++应用程序需要访问外部服务器,该服务器将数据流回我的应用程序。 访问API是基于Java的API。 我目前的计划是构建一个Java包装器,它将处理所有API调用。 这个包装器将使用JNI从我的C ++应用程序调用。 收到数据后,它会尽可能地处理数据,然后通过调整后的数据通知我的C ++应用程序。

总结如何从Java类调用C ++函数回调,而Java类又是通过JNI从C ++应用程序调用的。 没有DLL加载以供Java使用。 如果一切都能正常接口,我可以根据需要制作一个。

功能路径:C ++应用程序 - > Java类库 - > C ++回调函数

我找到了。 环境类中有一个名为“ RegisterNatives ”的函数。 有了这个,我可以在运行时为任何Java类注册C ++回调。 我尝试了它,它的工作方式与预期完全一致。

暂无
暂无

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

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