Python、Boost C++和Pys

2024-04-18 22:50:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用LiBooStpyPython和Pyste生成器将Python嵌入到C++的LIB中。在

我设法生成了一个lib类的包装器。它可以编译,但我不能在Python中使用它,因为函数签名不同。在

例如:

Pyste为MyLI::Obj::TraseTeA.()方法生成此C++代码:

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(MyLib_Entity_Translate_overloads_3_4, Translate, 3, 4)

// Module ======================================================================                                                                                                 
BOOST_PYTHON_MODULE(mylib)
{
    scope* MyLib_Object_scope = new scope(
    class_< MyLib::Object, boost::noncopyable, MyLib_Object_Wrapper >("Object", init< const MyLib::String& >())
    .def("Translate", (void (MyLib::Entity::*)(const double&, const double&, const double&, const MyLib::Entity*) &MyLib::Entity::Translate, MyLib_Entity_Translate_overloads_3_4())
    /*...*/
    };
 }

当我用Python调用它时

^{pr2}$

我有这个错误

Error in Python: : Python argument types in Object.Translate(Object, float, float, float) did not match C++ signature: Translate(MyLib::Entity {lvalue}, double, double, double) : File "testobj.py", line 2, in this.Translate(0.0, 1.0, 0.0)

注意MyLib::Object继承自MyLib::Entity

我该怎么办?是否也导出MyLib::Entity?把我所有的C++代码从双转换为浮点?在


Tags: 代码inobjectlibfloattranslateentityscope