pybind11是一个只有头文件(header-only)的轻量级库,其主要目的是建立C++的Python代码绑定,实现C++和Python无缝连接。我学习这个工具的目的,是为了能够在Python中调用C++代码实现一些计算密集型任务,同时培养自己的混合编程的能力。
1 环境
- Windows11
- VS2022
- pybind11
- Anaconda3 , with python 3.8
2 源码下载
首先去GitHub上将项目源码(https://github.com/pybind/pybind11)克隆下来。
Git命令行:git clone https://github.com/pybind/pybind11.git
pybind11 是 header-only 的,不需要编译动态链接库,直接使用即可。
3 VS配置
-
在VS2022中新建一个C++工程。
-
设置编译输出类型
-
设置include包含路径
-
设置lib路径
-
设置链接器
这里的lib文件名取决于Anaconda3中的python版本。
4 测试
在VS中新建源文件pybind11_test.cpp
,编译下面的测试代码:
#include<pybind11/pybind11.h>
namespace py = pybind11;
PYBIND11_MODULE(example, m) {
m.doc() = "pybind11 example module";
// Add bindings here
m.def("foo", []() {
return "Hello, World!";
});
}
生成解决方案,得到lib文件和pyd文件。
有了上面两个文件,我们就能实现在Python中调用C++代码的目的了。
我们将这两个文件重命名为example后复制到python工程的根目录,然后新建一个.py文件执行下面代码进行测试。
import example
print(example.foo())
输出如下:
至此,pybind11的安装和配置完成,测试成功!
5 总结
后面开展对pybind11官方文档的学习,希望自己坚持一学一记!
参考
官方文档中文翻译:pybind11-Chinese-docs: pybind11中文文档