教你如何在python中调用c++

在Python中调用C++代码,通常不直接通过ctypes(因为ctypes主要是为C语言设计的),而是使用像pybind11CythonBoost.PythonSWIG这样的工具。这里,我将给出使用pybind11的示例,因为pybind11是一个流行的、轻量级的库,用于在Python和C++之间创建接口。

步骤 1: 安装pybind11

首先,需要安装pybind11。虽然pybind11主要是头文件,但可以通过pip安装一个辅助包来简化构建过程:

pip install pybind11

步骤 2: 编写C++代码

创建一个C++文件(例如example.cpp),并使用pybind11的宏来定义Python可以调用的函数或类。

// example.cpp  
#include <pybind11/pybind11.h>  
  
int add(int i, int j) {  
    return i + j;  
}  
  
namespace py = pybind11;  
  
PYBIND11_MODULE(example, m) {  
    m.doc() = "pybind11 example plugin"; // 可选文档字符串  
    m.def("add", &add, "A function which adds two numbers");  
}

步骤 3: 编译C++代码为Python模块

需要使用C++编译器(如g++或clang++)将C++代码编译为Python模块。这通常涉及编写一个CMakeLists.txt文件或使用setup.py(配合pybind11-cmake或手动指定编译命令)。

为了简化,这里我提供一个使用CMake的示例。首先,你需要安装CMake。

CMakeLists.txt

cmake_minimum_required(VERSION 3.4)  
project(example)  
  
add_subdirectory(pybind11)  
pybind11_add_module(example example.cpp)

注意:上面的CMakeLists.txt假设pybind11的源代码位于与你的CMakeLists.txt相同的目录中名为pybind11的子目录中。

然后,在包含CMakeLists.txt的目录中运行CMake和make(或你选择的构建系统)来构建模块。

mkdir build  
cd build  
cmake ..  
make

这将生成一个名为example.*.so(在Linux/macOS上)或example.*.pyd(在Windows上)的Python模块。

步骤 4: 在Python中使用模块

现在,你可以在Python中导入并使用这个模块了。

import example  
  
result = example.add(1, 2)  
print(result)  # 输出: 3
  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值