我正在寻找一种简单的方法来将一个 C++ 类实例暴露给嵌入式 Python 解释器。具体要求如下:
- 我有一个 C++ 库,已经使用 swig 进行了封装,可以从 Python 解释器中使用。 - 我有一个 C++ 主程序,其中实例化了来自库中的 Foo 类,并嵌入了一个 Python 解释器。 - 我想将我的 C++ world 中的 Foo 类实例暴露给 Python world(并作为一个 Foo 类)。
请问这是否可行,如果是,应该怎么做?
我认为问题与boost::python::ptr or PyInstance_New usage的第一个答案几乎相同。我猜这意味着我应该使用 boost.Python 来封装我的库?
我的唯一目标是在嵌入式 Python 解释器中操作我的 C++ Foo 实例(不确定之前的方法是否适用)。实际上,我已经使用 swig 将我的 Foo 类暴露给了 Python。
以下是我拥有的:
我的 Foo 类:
我想要的是: 具有C++主程序的嵌入式Python解释器,可以操作C++世界变量。
- 我有一个 C++ 库,已经使用 swig 进行了封装,可以从 Python 解释器中使用。 - 我有一个 C++ 主程序,其中实例化了来自库中的 Foo 类,并嵌入了一个 Python 解释器。 - 我想将我的 C++ world 中的 Foo 类实例暴露给 Python world(并作为一个 Foo 类)。
请问这是否可行,如果是,应该怎么做?
我认为问题与boost::python::ptr or PyInstance_New usage的第一个答案几乎相同。我猜这意味着我应该使用 boost.Python 来封装我的库?
我的唯一目标是在嵌入式 Python 解释器中操作我的 C++ Foo 实例(不确定之前的方法是否适用)。实际上,我已经使用 swig 将我的 Foo 类暴露给了 Python。
以下是我拥有的:
我的 Foo 类:
class Foo{...};
我的封装库(包括Foo类)暴露给Python:这样我就可以启动Python解释器并像这样做些事情:
import my_module
foo=my_modulde.Foo()
我想要的是: 具有C++主程序的嵌入式Python解释器,可以操作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;
}