【Cython】用Cython包装C++代码,提供给python调用

本文详细介绍了如何使用Cython将C++代码封装,以便于Python调用。过程包括定义C++头文件和源文件,创建Cython文件声明C++类接口,编译.pyx和.cpp文件,最后在Python中调用。文中还提到在不同环境下的编译注意事项,如在Python3.5+Cython0.26环境下使用cythonize()函数进行编译,并给出示例代码。
摘要由CSDN通过智能技术生成

【核心概要】

(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.编译语句-运行

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值