最近在使用swig 封装C/C++程序作为python的第三方库,在此mark一些踩到的坑和需要注意的细节。
前言
swig(Simplified Wrapper and Interface Generator)能够很方便将C/C++代码包装成其他语言的接口,具体可以查看官网手册SWIG-4.0 Documentation。本文主要记录下在使用swig封装C++作为python第三方库时所遇到的一些问题,以便以后使用时方便查找。
测试环境:Ubuntu 18.04.5 LTS +Python 3.6.9+SWIG 4.0.2
流程
1)按照C/C++标准写代码(建议最好将函数声明,类声明,结构声明等写单独的.h文件里,函数体等写在.cpp文件中,这样方便后面封装,最好不要含有main函数,需要特殊封装,一般也用不到)按照这种方式组织的C/C++文件,直接通过C/C++的编译,可以运行就行。封装不会改变原来C文件的结构。
例如 头文件 example.h 文件
/* File: example.h */
int fact(int n);
函数定义文件 example.c
/* File: example.c */
#includ