0

我的问题是如何从正在运行的 C++ 代码中调用正在运行的 Java 代码,反之亦然。有几篇关于从 C unsing Java Native Interface (JNI) 或 Java Native Access (JNA) 调用 Java 或 JVM 编译的 c++ 文件的文章。但是,对我来说,这似乎不是调用运行代码的适当方式,因为在示例中只调用了编译库。

我的情况如下。有两个应用程序在本地计算机上运行。一种应用程序是基于 Eclipse 和 Java 的。另一个应用程序是基于 C++ 的。我需要让他们双向交流。也许这是 RPC 的情况?但我不需要通过网络进行交流。

我认为 RCP 可能是一种方式,但它对我来说似乎太大了,因为我不想通过网络进行交流,而且我不知道如何在这种情况下使用 RCP。我正在寻找更智能的解决方案。

有什么经验可以帮助我吗?

谢谢并恭祝安康

4

2 回答 2

1

您可能希望查看我的 C++ 到 Java RPC 解决方案。给定一个 Java 类,它会生成一个 C++ 客户端存根和 Java 服务器存根。

https://github.com/danfickle/cppToJavaRpcStubGenerator

编辑:我认为 CORBA 是“标准”解决方案。但是,我书架上(但尚未阅读)的 1000 页 Java 和 CORBA 书表明存在学习曲线。您可能还希望查看 MessagePack、Thrift、ActiveMQ 等。抱歉,我无法提供更多帮助。

于 2012-06-16T08:33:10.010 回答
0

JNI 允许您链接 C++ 和 Java 代码;但是,两者是同一个程序。

如果您想让一个程序调用另一个程序,最简单的方法是使用支持网络的技术。RPC、CORBA、客户端/服务器套接字或包括网络在内的任何其他方式都非常适合您。

存在更难的非网络堆栈解决方案,如共享内存、信号量、管道等;但是,它们需要一个支持它们的操作系统,并且它们的使用方式受到限制,而且您需要找到使用它们的两种语言的语言绑定。

于 2012-06-15T15:56:34.497 回答