用一些简单的例子来记录下常见用法。
导出模块
导出一个空的Python模块,
BOOST_PYTHON_MODULE(py_sample) {
}
在相应的Python代码中可以dir查看导出模块的内容,
import py_sample
print dir(py_sample) # ['__doc__', '__name__', '__package__']
导出函数
在C++中定义函数,并做相应导出,
std::string Foobar() {
return "foobar";
}
BOOST_PYTHON_MODULE(py_sample) {
def("foobar", Foobar);
}
对于函数参数以及返回值是简单类型,比如int/long/float/double/bool/string等,Boost会自动进行转化。
导出类
直接来看具体的例子,
class Base {
public:
Base(std::string name):
name_(name),
value1_(0),
value2_(0) {
}
Base(int value1, int value2): name_("") {
value1_ = value1;
value2_ = value2;
}
std::string GetName() {
return name_;
}
int getValue2() {
return value2_;
}
public:
std::string name_;
int value1_;
private:
int value2_;
};
BOOST_PYTHON_MODULE(py_sample) {
class_("Base", init<:string>())
.def(init())
.d