我正在使用 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 ?