从Python调用C/C++:如何将原生代码集成到Python项目中?
大家好!我写Python已经两年了,但最近遇到一个让我困惑的问题。我需要加速项目中的一个计算模块。Python运行太慢(有数百万次迭代的循环),所以我决定将关键部分用C++重写。
我写了一个简单的C++函数来计算斐波那契数:
```cpp
// fibonacci.cpp
#include
extern "C" {
int fibonacci(int n) {
if (n <= 1) return n;
int a = 0, b = 1, temp;
for (int i = 2; i <= n; ++i) {
temp = a + b;
a = b;
b = temp;
}
return b;
}
}
```
通过MinGW编译成DLL:`g++ -shared -o fibonacci.dll fibonacci.cpp`
现在尝试通过ctypes从Python调用它:
```python
import ctypes
lib = ctypes.CDLL('./fibonacci.dll')
result = lib.fibonacci(10)
print(result) # 输出55 — 成功了!
```
但这是一个简单的情况。如果需要传递数组数据呢?