python调用c/c++函数
- 使用Cython:
Cython是一个将Python代码转换为C语言的工具,它允许你在Python代码中调用C/C++函数,并将它们编译成Python扩展模块。这种方法效率较高,但需要你对Cython有一定的了解。 - 使用ctypes模块:
ctypes模块允许Python代码调用动态链接库(.so文件)中的C函数。你可以使用ctypes加载C/C++编译后生成的共享库,并调用其中的函数。 - 使用CFFI:
CFFI(C Foreign Function Interface)是Python标准库的一部分,它提供了一种简单的方式来调用C函数。你可以使用CFFI来加载C头文件,并在Python中调用C函数。 - 使用SWIG:
SWIG是一个用于连接C/C++代码和多种高级编程语言(包括Python)的工具。它可以自动生成包装器代码,使得你可以在Python中调用C/C++函数。 - 使用Python的subprocess模块:
如果C/C++程序是一个独立的可执行文件,你可以使用Python的subprocess模块来启动这个程序,并通过标准输入输出流与之进行通信。
下面是一个使用ctypes模块调用C函数的简单示例:
假设我们有一个C文件example.c,其中定义了一个名为add的函数,用于计算两个整数的和:
// example.c
int add(int a, int b) {
return a + b;
}
接下来,我们需要将该C文件编译成共享库,生成一个名为example.so的文件:
gcc -shared -o example.so -fPIC example.c
然后,我们可以在Python中使用ctypes模块加载这个共享库,并调用其中的函数:
# test.py
import ctypes
# 加载共享库
lib = ctypes.CDLL('./example.so')
# 调用add函数
result = lib.add(10, 20)
print("The result is:", result)
运行Python脚本test.py,应该能够看到输出结果为The result is: 30,表示成功调用了C函数并得到了结果。