첫째,이 의심을 해결하려는 모든 분들께 감사드립니다. 파이썬에서 사용되는 최소한의 C++ 프로젝트를 변환하려고합니다. 이러한 노력의 근본적인 이유는 속도 때문입니다.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 인스턴스를 받아들이는 메소드와 float 어레이에 대한 포인터를 받아들이는 메소드의 두 가지 메소드를 가지고 있습니다.
는 지금까지 누군가가이 작업을 수행하는 방법에 나를 인도시겠습니까
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);
}
아래와 같습니다 쓴 바인딩? 당신이 here을 설명 overload cast
을해야 할 것 같다
는'AngleBetween()'무엇입니까? 이 함수는 코드 예제에 없습니다. –
Ooops는 처음에 내가 요청한 것과 비슷한 서명입니다. 내가이 주석을 쓰고있을 때, 같은 라이브러리를 테스트 할 때 터미널에 저기에있었습니다. 죄송합니다. –