pybind11 的 Hello World

pybind11是一个轻量级的仅头文件库,主要用于创建现有C++代码的Python绑定。

Github地址: https://github.com/pybind/pybind11

官方文档: https://pybind11.readthedocs.io/en/latest/basics.html

背景:在实际项目中使用该库的原因

1、CPU密集型函数由C++执行要优于python执行;

2、C++是编译型语言、Python是解释型语言故无法隐藏代码,核心代码由C++实现可以避免别人直接看到实现逻辑;

3、第三方SDK如果是C++提供的,可由pybind11进行封装提供给python调用。

1 pybind11编译安装

1、基础环境需要有python3、cmake

2、从github上下载pybind11源码,下载地址 https://github.com/pybind/pybind11

3、编译安装pybind11源码

mkdir build
cd build
cmake ..
cmake --build . --config Release
make -j4
make install

2 C++使用pybind11生成动态库

目录结构为:
在这里插入图片描述

1、新建src文件夹并在该文件夹下编写example.cpp源文件。

#include <pybind11/pybind11.h>
#include <iostream>
#include <string>

std::string Hello() {
        return "Hello, World";
}


PYBIND11_MODULE(example, m) {
        m.doc() = "pybind11 example plugin"; // optional module docstring
        m.def("Hello", &Hello, "A function which return Hello World");
}

2、编写CMakeLists.txt文件

cmake_minimum_required(VERSION 2.8.12)
project(example)

find_package(pybind11 REQUIRED)

pybind11_add_module(example src/example.cpp)

3、编译生成动态库so文件

mkdir build
cd build
cmake ..
make

编译后的目录结构为:
在这里插入图片描述

example.cpython-37m-x86_64-linux-gnu.so同级目录下运行python3调用example库中的函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uKotOBZ7-1669188121931)(调用pybind11.png)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值