2016-07-25 53 views
-4

有沒有辦法來從python運行C++類而不使用任何外部庫像Boost.Python,SWING ect?我不想傳遞任何參數給這個類或者調用一個特定的方法,並且在我的C++類中,我只有一個void main方法,我只是想運行main而已。從python運行C++類

或者如果這是不可能的,請看本教程http://intermediate-and-advanced-software-carpentry.readthedocs.io/en/latest/c++-wrapping.html#manual-wrapping。但我不明白我是否應該將hello_wrapper函數放在具有原始hello函數的相同C++類中。同時,我怎麼能在Python中創建一個模(教程第二部分),並在那裏我應該把這個代碼

DL_EXPORT(void) inithello(void) 
{ 
    Py_InitModule("hello", HelloMethods); 
} 

感謝

回答

1

有沒有辦法運行一個C++類

你不運行C++類。他們是數據類型!

Boost.Python的,SWING

這就是所謂的痛飲,不能搖擺:)

您可以添加初始化的PyObject自己的C包裝代碼。我建議閱讀CPython文檔和擴展python教程中的示例。既然你沒有指定一個版本,我不能給你一個獨立的鏈接。

請注意,python是C,而C++不是;這意味着你必須用C ABI導出多個東西,即在你的代碼中使用external "C"。這可能不是外行的東西,你當然應該評估是否使用外部包裝生成器確實是值得的 - 尤其是因爲使用了例如SWIG正確(這實在是一種痛苦),您可以獲得Python對象,其真的的行爲與python對象相似,例如,你可以用python等來擴展它們。