передать объект C ++ в функцию python с помощью boost :: python

Я хочу использовать встроенный Python в приложение C ++ и вызывать функции, определенные в скрипте Python. Параметр функции - это объект C ++. См. Мой код:

class Test
{
public:
    void f()
    {
        std::cout<<"sss"<<std::endl;
    }
};

int main()
{
    Py_Initialize();
    boost::python::object main = boost::python::import("__main__");
    boost::python::object global(main.attr("__dict__"));
    boost::python::object result = boost::python::exec_file("E:\\python2.py", global, global);
    boost::python::object foo = global["foo"];
    if(!foo.is_none())
    {
        boost::python::object pyo(boost::shared_ptr<Test>(new Test())); // compile error
        foo(pyo);
    }
    return 0;
}

python2.py:

def foo(o):
    o.f()

Как передать объект c ++ в foo? Я знаю, что swig может это сделать, но boost :: python?

6
задан jean 1 February 2012 в 01:43
поделиться