我的问题是如何从运行C ++代码调用运行Java代码,反之亦然。 有几篇文章可用于从Java或JVM中调用已编译的c ++文件,这些文件来自未使用Java的Java本机接口(JNI)或Java Native Access(JNA)。但是,对我来说,这似乎不是调用运行代码的适当方法,因为在示例中只调用了编译库。
我的案例如下。本地计算机上运行两个应用程序。一个应用程序是基于Eclipse和Java的。另一个应用程序是基于C ++的。我需要让他们双向沟通。也许这是RPC的情况?但我不需要通过网络进行沟通。
我认为RCP可能是一种方式,但它似乎对我来说太大了,因为我不想通过网络进行沟通,我不知道如何在这种情况下使用RCP。我正在寻找更智能的解决方案。
有没有经验可以帮助我?
谢谢和问候
罗布
答案 0 :(得分:1)
您可能希望查看我的C ++到Java RPC解决方案。给定Java类,它会生成C ++客户端存根和Java服务器存根。
https://github.com/danfickle/cppToJavaRpcStubGenerator
编辑:我认为CORBA是'标准'解决方案。然而,我在书架上(并且没有阅读过)的1000页书籍Java和CORBA表明存在学习曲线。您可能还希望查看MessagePack,Thrift,ActiveMQ等。抱歉,我无法提供更多帮助。
答案 1 :(得分:0)
JNI允许您链接C ++和Java代码;但是,两者都是同一个程序。
如果您想让一个程序调用另一个程序,最简单的方法是使用支持网络的技术。 RPC,CORBA,客户端/服务器套接字或包括网络在内的任何其他方式都很适合您。
存在更难的非网络堆栈解决方案,如共享内存,信号量,管道等;但是,它们需要一个支持它们的操作系统,并受到如何使用它们的限制,此外,您还需要使用它们找到两种语言的语言绑定。