2011-03-18 41 views
1

無論如何在頭文件中使用BOOST_PYTHON_MODULE?例如,我希望能夠在頭文件中聲明此模塊無論如何在頭文件中使用boost python包裝?

BOOST_PYTHON_MODULE(Status_Effect) 
{ 
    boost::python::class_<StatusEffect>("StatusEffect") 
     .def("GetPriority", &StatusEffect::GetPriority) 
     .def("GetDescription", &StatusEffect::GetDescription) 
     .def("GetName", &StatusEffect::GetName); 
} 

。每當我嘗試,但它抱怨多個定義。有誰知道一個方法來做一個頭文件中的包裝?

感謝

+0

爲什麼你要在標題中? – Mat 2011-03-18 08:15:24

+0

把它放在標題中沒有意義。編譯器和boost :: python會以任何方式將你的代碼從二進制文件中導出,並且在C++中你可以用它來做其他事情 – 2011-03-18 14:20:49

回答

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,也可能不安全。

相關問題