我正在寻找一种将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