首页 > 解决方案 > 如何使用 pybind11 正确编译 c++ 代码

问题描述

我有以下带有pybind11的基本cpp代码:

#include "pch.h"
#include <pybind11/pybind11.h>

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(example, m) {
    m.doc() = "pybind11 example plugin"; // optional module docstring

    m.def("add", &add, "A function which adds two numbers");
}

这是我遵循的步骤(我使用的是没有 python 模块的 Visual Studio 17,我在 anaconda envs 中有单独的 python):

pybind11中的文档没有指定编译器应该生成哪些文件类型,它应该是库文件还是dll?除此之外,还有什么特殊的步骤需要遵循吗?

标签: pythonc++pybind11

解决方案


我想回应@pschill 的回答:

首先尝试使用受支持/记录在案的构建工具链,然后尝试在人迹罕至的地方做一些事情:

https://pybind11.readthedocs.io/en/master/compiling.html

我建议您使用 CMake,尝试您的示例代码的子集,然后使用详细选项(例如make VERBOSE=1)构建您的库,以查看添加的内容以及如何生成目标。

如果您仍想保留非 CMake 工作流程,则可以将相关标志移植到 VS2017。

(话虽如此,CMake 可能有生成 VS2017 项目文件的选项。)


推荐阅读