从运行C++;代码,反之亦然 我的问题是如何调用运行C++代码运行java代码,反之亦然。 有几个帖子涉及调用来自java或JVM的编译C++文件,从C中删除java本地接口(JNI)或java本地访问(JNA)。然而,在我看来,这似乎不是调用运行代码的适当方式,因为在示例中只调用编译过的库

从运行C++;代码,反之亦然 我的问题是如何调用运行C++代码运行java代码,反之亦然。 有几个帖子涉及调用来自java或JVM的编译C++文件,从C中删除java本地接口(JNI)或java本地访问(JNA)。然而,在我看来,这似乎不是调用运行代码的适当方式,因为在示例中只调用编译过的库,java,c++,java-native-interface,rcp,method-invocation,Java,C++,Java Native Interface,Rcp,Method Invocation,我的情况如下。有两个应用程序在本地计算机上运行。一个应用程序是基于Eclipse和Java的。另一个应用程序是基于C++的。我需要让他们双向沟通。也许这是RPC的一个例子?但我不需要通过网络交流 我认为RCP可能是一种方式,但它对我来说似乎太大了,因为我不想通过网络进行交流,我不知道如何在这种情况下使用RCP。我正在寻找一个更聪明的解决方案 有什么经验可以帮助我吗 谢谢和问候 Rob JNI允许您链接C++和java代码;然而,两者都是相同的程序 如果您想让一个程序调用另一个程序,最简单的方

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

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

有什么经验可以帮助我吗

谢谢和问候


Rob

JNI允许您链接C++和java代码;然而,两者都是相同的程序

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


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

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


编辑:我认为CORBA是“标准”解决方案。然而,我书架上有一本1000页的书《Java和CORBA》(我还没有读过),这本书表明我有一个学习曲线。您还可以查看MessagePack、Thrift、ActiveMQ等。对不起,我帮不了您什么忙。

您可以使用多种进程间通信方式。我一直是命名管道的粉丝,但它对您来说可能太简单了。请记住,虽然完全支持网络的RPC机制可能看起来有点过分,但您可以使用现有的库来完成这项艰巨的工作,它确实为您提供了在未来跨网络或同一主机上的多个虚拟机分发应用程序的空间,等等。谢谢Edwin!但我不知道如何开始。我应该使用RMI调用C++的java应用程序吗?我可以用哪种RCP来调用C++应用程序中的java应用程序?我不太熟悉RCP。谢谢你,丹尼尔!不过,RCP对我来说似乎太大了,并且存在一些性能问题。性能对我的情况很重要,因为我的两个应用程序将在短时间内交换数百万条消息。本地java应用程序和本地C++应用程序之间的消息交换是否如此罕见,以致没有标准的解决方案可用?