在Visual c++和Python之间交换数据

Exchanging data between Visual C++ and Python

本文关键字:之间 交换 数据 Python Visual c++      更新时间:2023-10-16

故事是这样的

我有一个Visual c++代码运行车辆模拟器。模拟器以矢量形式捕获车辆的状态,并可以接收控制输入(例如。转向角度,踏板)可以从键盘或手动(通过代码)。我的目标是自动化车辆控制,然而,我已经在Python中实现了控制类。

我想把车辆的状态从c++代码输入到python类中,在python类中完成一些处理。然后,python类应该输出相应的控制输入,以供c++代码接收。

是否有简单的方法来实现这一点?我读过类似的帖子,但没有一个对我来说是清楚的。

我想到的一种方法是使用文件,两个类都读取和写入一个文件,从中获得车辆状态和控制输入,然而,这可能会有繁琐的同步问题!

流水线也是可行的,但看起来很复杂,除非你能提供一个很好的简单的解决方案:):)

底线是,我希望c++类和python类在相互交换数据的同时并发运行。

提前感谢!

如果你需要同时运行两个程序,那么没有简单的方法可以做到这一点,你将不得不在两个独立的进程之间实现异步通信机制。

实现这一点的一种方法是使用套接字。这样,如果需要的话,您的控制器和c++应用程序可以在不同的机器上运行。

在c++端,你可以基于boost::asio来从Python控制应用程序读取消息并发送响应。参见:Boost Asio

python方面请参见:python sockets HowTo

指出:

boost::python将允许您从Python调用c++,从c++调用Python。

SWIG还可以用于包装c++类,以便可以从Python调用它们。

你可以使用Boost::Python来包装你的c++代码

您可以尝试ctypes(见这里)吗?

要从c++中调用python中的东西,可以使用python API。