我有一个项目目录,如下所示:
|__ __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)
内棒.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的问题。有没有办法至少弄清楚到底发生了什么
目前没有回答
相关问题 更多 >
编程相关推荐