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)]](https://i-blog.csdnimg.cn/blog_migrate/e27c0c692fea49ec709890f9b67cde99.png)
本文介绍pybind11库的安装与使用方法,通过实例演示如何利用pybind11将C++代码转换为Python可调用的动态库,提高程序性能并保护核心算法。
2万+

被折叠的 条评论
为什么被折叠?



