目录
部分细节未展现,感兴趣可留言!
完整代码可在资源中免积分下载
1. 准备工作
推荐在docker中运行
- 安装pybind11
pip install pybind11
- 安装cmake
sudo apt update
sudo apt install cmake
2. 示例代码
1. 编写C++源文件
// example.cpp
#include <pybind11/pybind11.h>
int add(int a, int b) {
return a + b;
}
namespace py = pybind11;
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
2. 编写CMakeLists.txt
注意: 和cpp位于同一目录,如果报错找不到pybind11,需要指定pybind11的路径(详细方法见评论区)
# CMakeLists.txt
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(example)
find_package(pybind11 REQUIRED)
pybind11_add_module(example example.cpp)
3. 编译和使用
完成简单的开发工作后,编译代码即可得到对应so,so可直接导入python使用
1. 编译:
mkdir build
cd build
cmake ..
make
编译成功后,得到example.cpython-38-x86_64-linux-gnu.so(Linux平台),其中38代表python版本为3.8, windows平台将得到example.cp38-win_amd64.pyd
2. 在python端导入so
import example # 对应so的名字
result = example.add(2, 3)
print(result) # 输出: 5
将编译得到的.so文件放在Python能够搜索到的路径中,如项目目录或Python的site-packages路径,或者任意路径(设置环境变量PYTHONPATH指向so即可)