2008-09-08 13 views

回答

2

Embeding你的C內的Python解釋++應用程序將讓你運行使用你的應用程序運行Python腳本Python程序。它還將使這些腳本更容易在您的應用程序中調用C++函數。如果這是你想要的,那麼前面提到的Boost庫可能就是你想讓它更容易創建鏈接的東西。在過去,我使用SWIG來生成C++代碼的Python接口。從你的問題來看,你是不是想讓Python腳本調用你的C++程序,或者你是否想讓C++調用Python。

許多Python函數都使用了不是內置於Python解釋器的模塊。如果你的Python腳本調用這些函數,那麼你需要讓你的用戶安裝Python或者在你的應用程序中包含python運行時文件。它將取決於你在Python腳本中導入的模塊。

2

Boost可能是最好的選擇,但是如果你想要更獨立的東西,並且如果這是用於Windows的話(這似乎是可行的,因爲它們是最不可能安裝Python的人),那麼你可以使用py2exe創建一個適合於COM對象的入口點的DLL。然後您可以通過COM與庫連接。 (很顯然,這不是一個跨平臺的解決方案)。

+0

爲什麼人們運行Windows更可能已經安裝了Python? – 2017-10-27 18:51:41

50

我想從我的C++程序中調用python腳本文件。

這意味着您想要將Python嵌入到C++應用程序中。正如Embedding Python in Another Application中提到的:

嵌入Python與 相似,但並不完全。該 不同的是,當你擴展 Python中, 應用程序的主程序仍是Python的 解釋,而如果你嵌入 Python中,主程序可能 無關的Python - 而是 一些零件應用程序 偶爾會調用Python解釋器來運行一些Python代碼。

我建議你先去Embedding Python in Another Application。然後請參閱下面的例子

  1. Embedding Python in C/C++: Part I

  2. Embedding Python in C/C++: Part II

  3. Embedding Python in Multi-Threaded C/C++ Applications

如果你喜歡Boost.Python,您可以訪問以下鏈接:

  1. Embedding Python with Boost.Python Part 1
+0

這不適用於比2008年更晚的任何Visual Studio版本,因爲那是編譯windows的python。如果您發現或能夠使用更高版本的運行時自己編譯python版本,則可以這樣做。我剛剛花了一天的時間嘗試使用vs 2013編譯python,但沒有取得任何成功。 – David 2014-04-29 16:01:06