本文主要说明使用SWIG来使得 python 调用 C++的方法。
如果没有参数传递从python传递至C++,python调用C++的最简单方法是将函数声明为C可用函数,然后作为C code被python调用,如Stack Overflow: Calling C/C++ from python?三楼所示;
有参数传递至C++函数,声明时会稍有不同;
swig 安装
1
| sudo apt-get install swig
|
python调用C的方法
接口文件定义
1 2 3 4 5 6 7 8
| %module example %{ extern int fact(int n); %} extern int fact(int n);
|
C源码文件
1 2 3 4 5
| int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); }
|
动态链接库生成
1 2 3 4 5 6 7 8
| swig -python example.i gcc -c example.c example_wrap.c -I/usr/include/python2.7 ld -shared example.o example_wrap.o -o _example.so
|
python调用
1 2 3 4 5 6 7
| >>> import example >>> example.fact(3) 6 >>> example.fact(6) 720 >>> example.fact(2) 2
|
小插曲
1 2
| whereis python | grep "include" # 查找python的include目录
|
参考资料
[1] Stack Overflow: Calling C/C++ from python?
[2] SWIG 项目主页
[3] python 调用 C++ code
[4] C++调用python