python调用C++
时间: 2023-07-11 17:54:37 浏览: 124
Python 可以通过 ctypes 模块、Cython、SWIG 等方式调用 C++。这里简单介绍 ctypes 模块的用法:
1. 编写 C++ 动态链接库
可以使用 C++ 编写动态链接库,将其编译为 .so(Linux)或 .dll(Windows)格式的库文件。例如,编写一个名为 add 的 C++ 函数,用于计算两个整数的和:
```
// add.cpp
int add(int x, int y) {
return x + y;
}
```
使用以下命令将其编译为动态链接库:
```
g++ -shared -fPIC add.cpp -o libadd.so # Linux
g++ -shared -DADD_EXPORTS add.cpp -o add.dll # Windows
```
2. 在 Python 中调用 C++ 函数
在 Python 中使用 ctypes 模块加载动态链接库,并调用其中的函数。例如,调用上述 add 函数:
```
# add.py
from ctypes import cdll
lib = cdll.LoadLibrary('./libadd.so') # Linux
# lib = cdll.LoadLibrary('./add.dll') # Windows
a = 1
b = 2
c = lib.add(a, b)
print(f"{a} + {b} = {c}")
```
运行该脚本,即可输出 1 + 2 = 3。
需要注意的是,在 Python 中调用 C++ 函数时,需要指定函数的参数类型和返回值类型。例如,如果 add 函数的返回值类型为 double 类型,可以使用如下代码调用:
```
lib.add.restype = ctypes.c_double
c = lib.add(ctypes.c_double(a), ctypes.c_double(b))
```
类似地,如果 add 函数的参数类型为 double 类型,可以使用如下代码调用:
```
lib.add.argtypes = [ctypes.c_double, ctypes.c_double]
c = lib.add(ctypes.c_double(a), ctypes.c_double(b))
```
阅读全文