无论如何在头文件中使用BOOST_PYTHON_MODULE?例如,我希望能够声明这个模块
BOOST_PYTHON_MODULE(Status_Effect)
{
boost::python::class_<StatusEffect>("StatusEffect")
.def("GetPriority", &StatusEffect::GetPriority)
.def("GetDescription", &StatusEffect::GetDescription)
.def("GetName", &StatusEffect::GetName);
}
在头文件中。每当我尝试时,它会抱怨多个定义。有没有人知道在头文件中进行包装的方法?
由于
答案 0 :(得分:0)
这是一个解决方法:括号内的内容只是普通的C ++代码。因此,您可以将该部分移动到内联函数中。
例如,您可以将其放入标题中:
inline void DeclareStatusEffect()
{
boost::python::class_<StatusEffect>("StatusEffect")
.def("GetPriority", &StatusEffect::GetPriority)
.def("GetDescription", &StatusEffect::GetDescription)
.def("GetName", &StatusEffect::GetName);
}
这是你的源文件:
BOOST_PYTHON_MODULE(Status_Effect)
{
DeclareStatusEffect();
}
您还可以查看BOOST_PYTHON_MODULE
宏的功能,也许还有一种方法可以在标题中添加更多内容,但是对于未来版本的Boost.Python来说,这可能不安全,即使你得到了它起作用。