双向通信Python和C ++

时间:2013-04-03 15:48:03

标签: c++ python

是否有可能让C ++ dll调用Python脚本,同时在C ++ dll中创建python实例的python脚本调用函数?

我可以使用哪个库?如果没有,是否有最佳实践?最好是使用共享内存进行通信,还是应该使用某种能够执行某些操作的服务?

我的目标平台是Windows

1 个答案:

答案 0 :(得分:2)

您可以使用ctypes模块在​​Python中使用用C / C ++编写的外部库。请注意,C ++ mangles函数名称和ctypes只能使用声明为extern "C"的函数! (参见例如this question

要从C ++调用Python脚本,您有两个选择:

  • 以脚本名称作为参数启动新的Python进程。在Windows上你可以例如请使用CreateProcess
  • Embed C ++应用程序中的Python,如Janne Karila所述。

请注意,这些内容与程序之间的通信没有多大关系。

库并不真正进行通信,因为它不是一个进程。它只为使用的进程提供功能和数据。

您可以从另一个流程开始流程,而无需在它们之间进行任何通信。

要在进程之间进行通信,请使用进程间通信。在Windows上执行此操作的不同方法列在here