首先,我要感謝大家試圖解決我的這個疑問。我正在致力於將最小的C++項目轉換爲在Python中使用。這一努力背後的真正原因是速度。PyBind - 重載函數
我遇到了PyBind,對它的功能以及它們提供的文檔數量感到非常驚訝。現在有些東西停止了工作,因爲我不知道如何去做。考慮文件「MySource.hpp」中的下面的代碼,你可以告訴我一個綁定可以做什麼?
struct Point3D
{
public:
double x, y, z;
CPoint3D();
CPoint3D(double x, double y, double z);
inline double Len() const;
inline void Normalize();
};
Point3D VectorCross(const Point3D& pt1, const Point3D& pt2, const Point3D& pt3);
void VectorCross(const float* u, const float* v, float * n);
我能夠爲Point3D定義一個綁定作爲一個類和它的某些成員函數。但我不知道如何爲超載方法「VectorCross」執行綁定。它有兩個方法,一個接受Point3D的實例,另一個接受指向浮點數組的指針。
的綁定我寫到目前爲止,如下所示
PYBIND11_MODULE(mymodule, m)
{
py::class_<Point3D> point3d(m, "Point3D");
point3d.def_readwrite("x", &CPoint3D::x);
point3d.def_readwrite("y", &CPoint3D::y);
point3d.def_readwrite("z", &CPoint3D::z);
point3d.def(py::init<>());
point3d.def(py::init<double , double , double >());
point3d.def("Len", &CPoint3D::Len);
point3d.def("Normalize", &CPoint3D::Normalize);
}
有人可以請指導我如何做到這一點?
問候,
什麼是'AngleBetween()'?這個函數不在你的代碼示例中。 –
Ooops與我最初詢問的簽名類似。當我寫評論的時候,我正在測試同一個庫,所以在我的終端上。抱歉讓你困惑。 –