2013-11-14 124 views
3

目前,我有以下几点:升压蟒蛇,嵌入在从蟒蛇调用C++函数

namespace py=boost::python; 

//C++ 
void f() { 
    std::cout << "hello world\n"; 
} 

//I am not precious about this, if it can be done without a module that would be great 
BOOST_PYTHON_MODULE(test) 
{ 
    py::def("f", f); 
} 

int main() { 
    auto main_module =py::import("__main__"); 
    auto main_namespace =main_module.attr("__dict__"); 
    //??????? 
    auto result=py::exec_file("t.py", main_namespace); 
} 

//t.py 
f() 

我试图调用F,但我不知道要得到它的工作所需的胶水。随着课程我可以做

int main() { 
    //... 

    py::obejct p_my_type=py::class_<my_type>("my_type").def("f", &my_type::f); 
    main_namespace["my_type"]=p_my_type; 

    //... 

然而boost::python::def似乎并不返回一个boost::python::objectclass_

我的问题是,我该如何得到第一个测试用例来达到预期效果? 其次是我在第二个代码片段“正确”暴露我的类型的方式?

回答