1

我正在使用 libboost_python 和 Pyste 生成器将 Python 嵌入到我的 C++ 库中。

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

例如:

Pyste 为 MyLib::Object::Translate() 方法生成此 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 调用它时

this.Translate(0.0, 1.0, 0.0) 

我有这个错误

Python中的错误::Object.Translate(Object,float,float,float)中的Python参数类型与C ++签名不匹配:Translate(MyLib :: Entity {lvalue},double,double,double):文件“testobj.py” ,第 2 行,在 this.Translate(0.0, 1.0, 0.0)

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

我应该怎么办?也导出 MyLib::Entity 吗?将我所有的 C++ 代码从 double 转换为 float ?

4

0 回答 0