使用c ++对象的全局实例扩展嵌入式python解释器

时间:2012-07-26 00:09:06

标签: c++ python boost-python

我有一个班级

class A {
  A(SomeClass* ptr);
  do_something();
};

我想在使用boost-python

的嵌入式python解释器中使用它

到目前为止,我已经设法通过BOOST_PYTHON_MODULE创建了一个python模块,并使用一个接受SomeClass指针的构造函数创建了一个class_<A>

现在我想扩展解释器,以便在调用某些python代码时有一个这个类的实例(名为an_a),以便以下python代码有效:

#preferably no imports here.
an_a.do_something()

我的问题有两个,我需要在使用解释器之前在python或C ++中构造这个对象,并且我需要使该对象可用于脚本的编写者。我在找到的文档中找到了如何做到这一点时遇到了一些问题。

1 个答案:

答案 0 :(得分:0)

我最近需要做这件事。我也考虑过(和使用过)Boost.Python,但我个人(尽管我喜欢Boost)我觉得不得不拖入一半的Boost库来获得这个功能。

因此,如果您感兴趣,我最近在Python包装器库中使用名为ECS:Python的第一原理实现了C ++的嵌入式Python脚本。 ECS:Python(嵌入式C ++脚本与Python)专为希望将C ++应用程序中的对象暴露给嵌入式Python解释器以进行交互式脚本编写的C ++开发人员而设计。

它的免费(BSD)和开源: http://sourceforge.net/projects/ecspython