问题描述
我有一个如下所示的项目目录:
|__ __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 (将#修改为@)