official documentation显示了一个示例,其中Rectangle.h
仅包含原始类型。
如果要包装此类,
Rectangle.cpp
本身使用了Blabla.h
,它定义了BlaBla getBla(int x, BlaBla* ptr)
Rectangle.h
中的公共方法。如果我使用Cython进行编译,则会收到Unknown type
的{{1}}错误:
问:如何告诉Cython在哪里找到Blabla
?我还需要为BlaBla
编写自定义包装吗?
一个例子:
BlaBla
带有#ifndef RECTANGLE_H
#define RECTANGLE_H
#include "Blabla.h" // This is the addition from the official example
namespace shapes {
class Rectangle {
public:
int x0, y0, x1, y1;
Rectangle();
Rectangle(int x0, int y0, int x1, int y1);
~Rectangle();
int getArea();
void getSize(int* width, int* height);
void move(int dx, int dy);
// New method:
BlaBla getBla(int x, BlaBla* ptr);
};
}
#endif
.pxd
Cython将抱怨cdef extern from "Rectangle.h" namespace "shapes":
cdef cppclass Rectangle:
Rectangle() except +
Rectangle(int, int, int, int) except +
int x0, y0, x1, y1
int getArea()
void getSize(int* width, int* height)
void move(int, int)
// New:
BlaBla getBla(int x, BlaBla* ptr);
是无法识别的类型