在C ++中创建的python对象超出范围了吗?

问题描述

我有一个如下所示的项目目录:

|__ __main__.py
|
|__ cppmodules
|        |__ foo.cpp
|        |__ Foo.so
|__ pymodules
         |__ bar.py

在foo.cpp内部,我具有以下功能:

boost::python::object mod;
void set_global(boost::python::object pymod){
    mod = pymod;
}
const boost::python::api::object None = boost::python::api::object();

class MyClass{
public:
    boost::python::object bar;
    MyClass(){}
    void do_stuff(bool param,int param2){
        boost::python::object _bar;
        if (this->bar != None){
            // do something with this->bar
        }
        else{
            _bar = mod.attr("Bar")(param,param2);
            // I overloaded the operator somewhere else
            cout << _bar << endl;
        }
        cout << _bar << endl;
    }
};

主要 .py

内部
from pymodules import bar as bar_module
from cppmodules.Foo import set_global

set_global(bar_module)

内部bar.py

class Bar:
    def __init__(self,i,j):
        self.i = i
        self.j = j

第一个cout的输出正常,但第二个cout返回None:

<pymodules.bar.Bar object at 0x7f39f8b94748>
None

我完全不知道是什么原因导致此错误,而且我无法设法将其复制到其他地方(我确实设法在一种情况下遇到导入错误,而在另一种情况下确实发生了内核转储),但是我怀疑这是引用计数或anaconda的问题。有没有办法至少找出正在发生的事情?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)