C++写出的类怎么能直接让python脚本调用呢
时间: 2024-02-13 19:19:51 浏览: 103
要让 Python 脚本直接调用 C++ 编写的类,可以使用 pybind11 来实现 C++ 和 Python 的交互。以下是一个简单的示例:
1. 安装 pybind11:
首先,你需要安装 pybind11。可以通过 pip 安装:
```shell
pip install pybind11
```
2. 编写 C++ 类并使用 pybind11 绑定:
创建一个名为 `my_class.cpp` 的文件,其中包含 C++ 类的定义和与 Python 的绑定。
```cpp
#include <pybind11/pybind11.h>
class MyClass {
public:
MyClass(int value) : value_(value) {}
int get_value() {
return value_;
}
private:
int value_;
};
namespace py = pybind11;
PYBIND11_MODULE(my_class, m) {
py::class_<MyClass>(m, "MyClass")
.def(py::init<int>())
.def("get_value", &MyClass::get_value);
}
```
3. 构建 C++ 扩展模块:
在命令行中执行以下命令以构建 C++ 扩展模块:
```shell
c++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` my_class.cpp -o my_class`python3-config --extension-suffix`
```
4. 在 Python 中使用 C++ 类:
创建一个 Python 脚本,例如 `main.py`,并使用刚刚构建的 C++ 扩展模块:
```python
import my_class
# 创建 C++ 类的实例
obj = my_class.MyClass(42)
# 调用 C++ 类的成员函数
result = obj.get_value()
print(result) # 输出 42
```
通过以上步骤,你可以在 Python 中直接调用由 C++ 编写的类。确保在构建 C++ 扩展模块时使用正确的编译器和选项,并在 Python 脚本中导入正确的模块。
阅读全文