在 Python 中调用 C++ 库有几种常见的方法,其中包括使用 ctypes、Cython、SWIG 和 CFFI 等工具。
这里我们测试其中比较简单的方法,使用 ctypes 模块来调用 C++ 的动态函数库:
1. 编写并编译一个 cpp 的库
首先编写一个简单的 C++ 库,例如 the_math_lib.cpp:
#include <iostream>
extern "C" {
int cpp_add(int x, int y)
{
std::cout << "Add from C++ lib" << std::endl;
return x + y;
}
}
2. 编译为共享库
将 C++ 代码编译为共享库, Linux 下编写 Makefile:
the_math_lib.so: the_math_lib.cpp
g++ -shared -o the_math_lib.so -fPIC the_math_lib.cpp
3. Python 中调用 cpp 函数
编写 Python 脚本来调用 C++ 库,例如 invoke_cpp_function.py:
import ctypes
# Load the shared library
math_lib = ctypes.CDLL('./cpp_src/the_math_lib.so')
# Call the C++ function
w = math_lib.cpp_add(3, 4)
print('w =', w)
4. 运行 Python 脚本
运行 Python 脚本来调用 C++ 库:
python invoke_cpp_function.py
通过这种方法,可以在 Python 中调用编写的 C++ 库函数。
这只是一种简单的方法,实际项目中可能需要处理更复杂的数据类型和接口。
如果涉及更复杂的情况,可以考虑使用 Cython、SWIG 或 CFFI 等工具来更好地集成 C++ 代码和 Python。
效果图示: