我有一个需要与Java库连接的C ++应用程序。我想从Java端收到通知,因此需要回调到C ++应用程序。我发现了许多关于从C ++调用Java函数的例子(这是很容易的部分),并从Java调用从DLL导出的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 ++回调函数
答案 0 :(得分:3)
我找到了。环境类中有一个名为“RegisterNatives”的函数。有了这个,我可以在运行时为任何Java类注册C ++回调。我尝试了它,它的工作方式完全符合预期。