2013-04-03 57 views
2

C++ dll是否可以調用Python腳本,同時在首先創建python實例的C++ dll中有一個python腳本調用函數?雙向通信Python和C++

我可以使用什麼庫?如果沒有,是否有最佳做法?最好是使用共享內存進行通信還是應該使用某種能夠執行事務的服務?

我的目標平臺是Windows

+4

查看[Boost Python](http://www.boost.org/doc/libs/1_53_0/libs/python/doc/index.html)。 –

+1

這被稱爲[嵌入Python]() –

+1

你可能會考慮Cython,它使得接口明顯比使用直接的Python/C API更簡單,也可以與嵌入一起使用。我會發佈一個答案,但我只有在Linux上有這方面的經驗;)。 – FatalError

回答

2

您可以使用使用ctypes模塊用C/C++ Python中的外部庫。請注意,C++ mangles函數名稱和ctypes只能使用聲明爲extern "C"的函數! (見例如this question

要調用從C Python腳本++你有兩種選擇:

  • 開始爲腳本的名稱作爲參數一個新的Python程序。在窗戶上,您可以爲此使用CreateProcess
  • Embed作爲Janne Karila提到的C++應用程序中的Python。

注意,這些東西沒有太多的做程序之間的通信

圖書館並沒有真正溝通,因爲它不是一個過程。它僅爲使用提供過程的功能和數據。

而且您可以從另一個進程啓動進程,而無需在它們之間進行任何通信。

要在進程之間進行通信,請使用進程間通信。在Windows上執行該操作的不同方法列於here