【核心概要】
(1) 定义.h和.cpp文件(C++头文件和源文件);
(2) 定义.pyx文件(Cython文件);
- 声明Cython中的C++类接口,包装C++类:cdef extern from "Rectangle.h" namespace "shapes":
- 声明Cython类,用于使用C++类:cdef cppclass Rectangle:
- 处理结构体:Rectangle(int, int, int, int) except +,except +让Cython能够识别并容纳C++的错误;
- 声明属性和变量:int x0, y0, x1, y1; int getArea(); void getSize(int* width, int* height); void move(int, int);
- 用C++包装类声明变量:rec_ptr = new Rectangle(1, 2, 3, 4);
- 创建Cython包装函数:cdef class PyRectangle:# 定义python函数,返回cython调用的C++函数计算结果;
(3) 编译.pyx和.cpp\.h文件,链接到一起(通过Setup.py文件);
(4) 定义并运行.py文件(python文件),得到计算结果;
官方案例地址:https://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html
国内下载地址:http://download.csdn.net/download/yuan8222/9789553
============================================================================
1.Python再包装
在 Python 程序中,是看不到 cdef 的函数的,所以我们这里 def naive_dot(a, b) 来调用 cdef 过的 _naive_dot 函数。
2.编译语句-运行
<