从运行C++代码调用正在运行的 Java 代码,反之亦然
Calling running Java code from running C++ code and vice versa
我的问题是如何从运行C++代码调用正在运行的Java代码,反之亦然。有几篇文章是关于从Java调用编译的c ++文件或从C调用JVM,unsing Java Native Interface(JNI)或Java Native Access(JNA)。但是,对我来说,这似乎不是调用运行代码的适当方法,因为在示例中仅调用已编译的库。
我的情况如下所示。本地计算机上运行两个应用程序。一个应用程序是基于Eclipse和Java的。另一个应用程序是基于C++的。我需要让他们双向沟通。也许这是RPC的一个案例?但我不需要通过网络交流。
我认为 RCP 可能是一种方式,但对我来说似乎过大,因为我不想通过网络进行交流,而且我不知道在这种情况下如何使用 RCP。我正在寻找更智能的解决方案。
有什么经验可以帮助我吗?
感谢和问候
抢
您可能希望查看我对Java RPC解决方案的C++。给定一个 Java 类,它会生成一个C++客户端存根和 Java 服务器存根。
https://github.com/danfickle/cppToJavaRpcStubGenerator
编辑:我认为CORBA是"标准"解决方案。然而,我书架上(还没有读过)的1000页的《Java和CORBA》表明存在学习曲线。您可能还希望查看MessagePack,Thrift,ActiveMQ等。 对不起,我无法提供更多帮助。
JNI 允许您链接C++和 Java 代码;但是,两者是同一个程序。
如果要让一个程序调用另一个程序,最简单的方法是使用支持网络的技术。 RPC,CORBA,客户端/服务器套接字或任何其他方式(包括网络)将非常适合您。
存在更难的非网络堆栈解决方案,如共享内存、信号量、管道等;但是,它们需要一个支持它们的操作系统,并且受到使用方式的限制,此外,您还需要找到使用它们的两种语言的语言绑定。
- 我的代码运行良好,但在游戏循环中中断
- 通过窗口从C++代码运行 WSL 命令
- 如何使用 lldb 查找我的代码运行的位置
- 无法在 VS Code 上使用代码运行程序运行C++文件
- 我的代码运行良好,但现在当尝试将其制作成模板时,我遇到了许多看似无关的错误。这是怎么回事?
- Visual Studio代码运行环境
- 如何从C++代码运行自定义 GPU tensorflow::op?
- 在 ZeroMQ 中绑定订阅者套接字并连接发布者套接字会在代码运行时给出错误.为什么
- 代码运行缓慢
- .NET CORE 2 DLL引用带有C 代码运行时错误
- C++ 中控制台代码运行时的分段错误
- C++ 菜单代码 - 运行另一个类
- 以下代码运行后,如何在程序再次运行之前清除用户声明的变量 empName
- 当我使用此合并排序代码运行时,输出错误
- 有哪些优化技巧可以使我的代码运行得更快
- 使 C 代码能够作为C++代码运行
- 错误代码LNK1561阻止我的代码运行
- 如果我用代码块编译代码,为什么我的代码运行速度更快
- 更改Linux用户从C/C 代码运行时间
- 为什么这段代码运行这么慢