最近写BUG的时候遇到python计算很慢的情况,于是调研了一波在python中嵌入C++程序的方法,记录一下,便于查询。
一般来说在python调用C/C++程序主要可以分为3步:
-
1、编写C/C++实现程序。- 2、将C/C++程序编译成动态库。- 3、在Python中调用编译生成的库。Python在调用C/C++程序时有一些不同,需要注意。
1、Python调用C函数
Python调用C语言程序比较简单,将C语言程序编译好,再使用python中的ctypes模块调用即可。
C语言源文件:called_c.c
//编译命令 gcc -o libpycall.so -shared -fPIC called_c.c
#include<stdio.h>
int foo(int a, int b){<!-- -->
printf("a:%d, b:%d.", &a, &b);
return 0;
}
在命令行或者终端输入:
gcc -o libpycall.so -shared -fPIC called_c.c
生成libpycall.so动态库文件,之后就可以在Python中调用foo函数。Python文件:py_call_c.py
import ctypes
dll = ctypes.cdll.LoadLibrary
lib = dll('./libpycall.so'