c/c++代码如何在python环境中调用(本次应用需求:通过c++中的算法处理来自串口的数据)

1、将c/c++代码编译为动态链接库,使用Python标准库ctypes调用

2、动态链接库编译操作,及生成的.dll文件需放在call_c.py文件的同一目录下!

操作1:在windows命令界面切换到 .c 文件所在的目录:

如果.c文件中包含头文件(通常情况下存在),需要表明头文件的路径(此操作是当.c文件中include的路径与当前头文件所在路径不一样时需要)

3、为了满足在python中调用c++的函数和类,进行了哪些操作:

.c文件中:

.h文件中:

3、总结:

4、需要注意

⚠️编译相关

  1. 使用正确的编译器:C++ 代码用g++,不要用gcc
  2. 路径问题:Windows 上cd不切换盘符,需要用cd /d或先输入盘符
  3. 头文件路径:-I参数指定的是文件夹,不是文件
  4. 清理缓存:修改头文件后,删除.gch.o等缓存文件

⚠️代码修改相关

  1. 头文件修改后必须保存:否则编译器仍使用旧版本
  2. 包装函数必须在extern "C"中:否则函数名会被修饰
  3. 访问器方法尽量内联:在头文件中直接实现
  4. 记得销毁对象:Python 不会自动调用析构函数

⚠️Python 调用相关

  1. 必须声明函数类型:.argtypes.restype
  2. 数组需要转换:Python 列表 →ctypes数组
  3. 对象用指针存储:c_void_p类型
  4. 手动管理内存:创建后记得销毁