前端Java,后端c++,如何加入
Front end Java, back end C++ , how to join?
让我们给出一个非常基本的例子,我有一个程序,它遍历一个目录并获取该目录中的文件列表。为了讨论的缘故,假设这必须在c++中完成。然后,我希望使用Java Swing展示文件列表。
这是怎么做的?
您可以让您的c++程序写入标准输出,然后您的Java程序可以从中读取。你可以让你的Java前端执行你的c++后端,然后读取结果。
本文是关于如何使用stdout/stderr的一个很好的信息来源。
可以通过Java本机接口(Java Native Interface, JNI)实现。Oracle有官方指南,但你可能会发现谷歌更容易找到教程。
一个基本的方法是将c++的输出存储在一个文本文件中,然后从java中读取。
c++程序将列表放在一个特定的文件中,Java程序读取该文件?另一种方法可能是使用套接字(我不太了解Java,不知道它的IPC可能性)在程序之间"实时"通信。
最后,如果您必须同时使用c++和Swing,那么您无法在一个程序中完成。
按照Kevin的建议使用Java Native Interface (JNI)。或者,如果您需要在Java &在c++中,您需要将对象从运行c++代码的进程序列化到JVM进程。
你也可以在Dr. Dobb 1998年的文章中找到一些用处。
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 函数何时会在c++中包含stack_Unwind_Resume调用
- boost::asio如何生成多个协同程序,然后加入它们
- Python中的for循环与C++有何不同
- 在C++中释放内存期间,迭代器与指针有何不同
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 有没有办法在另一个函数中加入线程?(即超出其自身范围)
- 如何从食氧更新为光子,同时让Java也加入?
- 类中的 C++ int 被设置为值,似乎不知从何而来
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- 在没有任何锁的情况下加入另一个线程后是否需要内存围栏?
- Haskell线程何时加入
- 收益率和回报有何不同?
- 无法在 Windows 10 上加入 IPV6 多播组
- 即使长时间等待,C++线程也不会加入
- 覆盖私有功能,它与受保护功能有何不同?
- 线程::加入与分离
- C++宏解压缩并加入
- 擦除删除成语的性能增益从何而来
- 当加入 C++11 函数的线程仍未终止时,是否可以返回?