pybind11 VS2022下安装配置

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)克隆下来。

image-20221220184245875

Git命令行:git clone https://github.com/pybind/pybind11.git

pybind11 是 header-only 的,不需要编译动态链接库,直接使用即可。

image-20221220185034352

3 VS配置

  • 在VS2022中新建一个C++工程。

  • 设置编译输出类型

    image-20221220194013324

    image-20221220194154088

  • 设置include包含路径

    image-20221220195947640

  • 设置lib路径

    image-20221220200645313

  • 设置链接器

    image-20221220201504915

    这里的lib文件名取决于Anaconda3中的python版本。

4 测试

在VS中新建源文件pybind11_test.cpp,编译下面的测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#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**文件。

image-20221220202048291

image-20221220202320170

有了上面两个文件,我们就能实现在Python中调用C++代码的目的了。

我们将这两个文件重命名为example后复制到python工程的根目录,然后新建一个.py文件执行下面代码进行测试。

1
2
import example
print(example.foo())

输出如下:

image-20221220203709301

至此,pybind11的安装和配置完成,测试成功!

5 总结

后面开展对pybind11官方文档的学习,希望自己坚持一学一记!

参考

官方文档:pybind11 documentation

官方文档中文翻译:pybind11-Chinese-docs: pybind11中文文档

pybind11使用 - 简书 (jianshu.com)