无论如何在头文件中使用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);
}
在头文件中。但是,无论何时尝试,它都会抱怨多个定义。有谁知道在头文件中进行包装的方法吗?
谢谢
最佳答案
这是一种解决方法:括号内的内容只是普通的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,也可能不安全。关于c++ - 无论如何在标题中使用boost python包装器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5348672/