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

时间:2013-04-12 08:13:21

标签: c++ python controls pipe

这是故事,

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

我想从C ++代码输入车辆的状态到python类,其中进行了一些处理。然后,python类应输出相应的控件输入,由C ++代码接收。

有没有简单的方法来实现这一目标?我已经阅读了类似的帖子,但对我来说都没有。

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

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

底线是,我希望C ++类和python类在彼此之间交换数据的同时运行。

提前致谢!

3 个答案:

答案 0 :(得分:1)

您可以使用Boost::Python来包装C ++代码。

答案 1 :(得分:1)

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

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

在C ++方面,您可以将应用程序基于boost::asio来读取来自Python控件应用程序的消息并发送响应。见:Boost Asio

对于python方面,请参阅:Python sockets HowTo

注意:

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

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

答案 2 :(得分:0)

您可以尝试ctypessee here)吗?

要从C ++调用python中的东西,可以使用Python API