我必须使用 boost python 库检查传递的对象类型是否存在于 python 中:
// bp = boost::python
bool TypeExists(const std::string &typeName)
{
bp::object ret = bp::exec(
(boost::format("'%1%' in globals()") % typeName).str().c_str()
);
return bp::extract<bool>(ret);
}
所以,在这段代码中,我运行 python 表达式,它看起来像:'TypeName' in globals()
. 这应该返回布尔类型的对象。但是提取总是返回 0。类型 100% 存在,因为在TypeExists
调用后的下一行中,我创建了这种类型的对象。怎么了?