我正在尋找一種將C++類實例公開給python嵌入式解釋器的簡單方法。將C++類實例暴露給python嵌入式解釋器
- 我有一個C++庫。該庫被包裹(使用痛飲的時刻),我能夠從Python解釋器使用它
- 我從我的圖書館instanciates一個Foo類和嵌入Python解釋器一個C++主程序
我想將我的C++世界實例Foo展示給python世界(並且被看作是Foo類)。
這是可能的,如果是這樣,怎麼樣?
我認爲這幾乎就像在第一個答案: boost::python::ptr or PyInstance_New usage
我想這意味着我應該使用boost.Python
來包裝我的圖書館?
我唯一的目標是在嵌入式Python解釋器中操作我的C++ Foo實例(不確定它是否可以用前面的方法完成)。
希望我很清楚,謝謝你的幫助。
更新
謝謝您的回答。事實上,我已經將我的Foo類暴露給python(使用swig)。
我有什麼:
我Foo類:
class Foo{...};
我的包裹庫(包括Foo類)暴露在蟒蛇:這樣我就可以啓動Python解釋器和做這樣的事情:
import my_module
foo=my_modulde.Foo()
我想要什麼:
有一個嵌入python解釋器和操作C++世界變量的C++主程序。
int main(int argc, char **argv)
{
Foo foo; // instanciates foo
Py_Initialize();
Py_Main(argc, argv); // starts the python interpreter
// and manipulates THE foo instance in it
Py_Finalize();
return 0;
}
現在更清楚了嗎? :)
感謝您的回答,我也會考慮boost.Python。我已經意識到boost.python公開C++類的功能,但我有很多遺留代碼需要打包。所以swig看起來對我來說更好的解決方案(更快?更簡單?以及更多的語言目標)...... :( 我已經找到了你的一個老答案[here](http://stackoverflow.com/q/3378195/1044695),但它仍然不明確:)但我覺得這正是我正在尋找的東西(不僅僅是一個例子,而是全球的想法在這裏)? 我希望用swig和python api來做到這一點? :( – jineff
我已經添加了一個例子,試圖用boost :: python來回答你確切的問題 - 害怕我忍不住用swig。 – James
非常感謝!這正是我想要的(除了boost.python)。已經提到你的答案是有用的(實際上非常有用:))。我會等待一些其他回覆(特別是關於swig)並深入瞭解您的解決方案。 – jineff