小编jin*_*eff的帖子

将C++类实例暴露给python嵌入式解释器

我正在寻找一种简单的方法将C++类实例暴露给python嵌入式解释器.

  • 我有一个C++库.这个库被包装(暂时使用swig),我可以从python解释器中使用它
  • 我有一个C++主程序,它从我的库中实现了一个Foo类并嵌入了一个python解释器

我想将我的C++世界Foo实例暴露给python世界(并被视为Foo类).

这是可能的,如果是这样,怎么样?

我认为这几乎就像在第一个答案中: boost :: python :: ptr或PyInstance_New用法

我想这意味着我应该boost.Python用来包装我的图书馆?

我唯一的目标是在嵌入式python解释器中操作我的Coo Coo实例(不确定它是否可以使用前面的方法完成).

希望我很清楚,谢谢你的帮助.

更新

谢谢你的回答.事实上,我已经将我的Foo类暴露给python(使用swig).

是)我有的:

我的Foo课程:

class Foo{...};
Run Code Online (Sandbox Code Playgroud)

我的包装库(包括Foo类)暴露给python:所以我可以启动python解释器并执行以下操作:

import my_module
foo=my_modulde.Foo()
Run Code Online (Sandbox Code Playgroud)

我想要的是:

有一个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;
}
Run Code Online (Sandbox Code Playgroud)

现在更清楚了吗?:)

c++ python swig boost boost-python

19
推荐指数
2
解决办法
5653
查看次数

标签 统计

boost ×1

boost-python ×1

c++ ×1

python ×1

swig ×1