如何使用pybind11正确编译c ++代码

问题描述 投票:0回答:1

我有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标头。
  • 我将目标设置为x64和Release
  • 我只是编译了文件,在release目录中创建了一个对象“example.obj”
  • 我将目标文件添加到pythonpath中包含的目录中
  • 尝试在python中导入示例,它没有给出名为example error的模块

pybind11中的文档没有指定编译器应该生成哪些文件类型,它应该是库文件还是dll?除此之外是否还有其他特殊步骤?

python c++ pybind11
1个回答
0
投票

我想回应@ pschill的回答:

首先尝试使用支持/记录的构建工具链,然后尝试在常规路径上执行某些操作:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.