是否有可能有一个c++ dll调用Python脚本,同时,在c++ dll中有一个Python脚本调用函数,首先创建Python实例?
我可以使用哪个库?如果没有,有没有最佳实践?使用共享内存进行通信是最好的还是我应该使用某种能够进行操作的服务?
我的目标平台是Windows
您可以使用ctypes
模块在Python中使用C/c++编写的外部库。但是要注意c++混淆了函数名,并且ctypes只能使用声明为extern "C"
的函数!(参见这个问题)
从c++调用Python脚本有两个选择:
- 以脚本名作为参数启动一个新的Python进程。在windows上,你可以使用CreateProcess。
- 在c++应用中嵌入Python,就像Janne Karila提到的。
请注意,这些事情与程序之间的通信没有多大关系。
库并没有真正的通信,因为它不是一个进程。它只是为进程使用提供函数和数据。
你可以从另一个进程中启动一个进程,而不需要它们之间的任何通信。
要在进程之间通信,使用进程间通信。这里列出了Windows上的不同方法。