ctypes¶
c语言生成so文件,使用python的ctypes模块
![https://img.zhaoweiguo.com/uPic/2024/06/C35m7U.png](https://img.zhaoweiguo.com/uPic/2024/06/C35m7U.png)
转换方式¶
C++¶
特别注意在调用C++函数需要在函数声明时,加入前缀“ extern “C” ”,这是由于C++支持函数重载功能,在编译时会更改函数名。在函数声明时,前缀extern “C”则确保按C的方式编译。
常见问题¶
如果python在调用C函数内部出现了问题,系统不会提示具体出现什么问题,只会提示”segmentation fault”。所以最好是先用C语言调用该动态库验证没有问题了再提供给python调用。
python传参给C函数时,可能会因为python传入实参与C函数形参类型不一致会出现问题( 一般int, string不会有问题,float要注意 )。这时需要在python调用时传入的实参做一个类型转换(见so.add(float, float)函数的调用)。