gpt4 book ai didi

python - 使用 pybind11 构建 cpp

转载 作者:行者123 更新时间:2023-12-05 07:09:00 25 4
gpt4 key购买 nike

我是 pybind(以及 C++)的新手。我正在尝试按照 pybind https://pybind11.readthedocs.io/en/stable/basics.html 上的教程进行操作,但我在构建它时遇到了问题。我在桌面上有一个文件夹,里面有这个结构:

.
├── file.txt
├── include
│   └── pybind11
│   ├── attr.h
│   ├── buffer_info.h
│   ├── cast.h
│   ├── chrono.h
│   ├── common.h
│   ├── complex.h
│   ├── detail
│   │   ├── class.h
│   │   ├── common.h
│   │   ├── descr.h
│   │   ├── init.h
│  │   ├── internals.h
│   │   └── typeid.h
│   ├── eigen.h
│   ├── embed.h
│   ├── eval.h
│   ├── functional.h
│   ├── iostream.h
│   ├── numpy.h
│   ├── operators.h
│   ├── options.h
│   ├── pybind11.h
│   ├── pytypes.h
│   ├── stl_bind.h
│   └── stl.h
├── prova.cpp
└── share
└── cmake
└── pybind11
├── FindPythonLibsNew.cmake
├── pybind11Config.cmake
├── pybind11ConfigVersion.cmake
├── pybind11Targets.cmake
└── pybind11Tools.cmake

6 directories, 31 files

我的prova.cpp文件如下:

#include <pybind11/pybind11.h>

namespace py = pybind11;

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

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

现在,在教程中他们说要使用此命令构建文件:

c++ -O3 -Wall -shared -std=c++11 -fPIC `python3 -m pybind11 --includes` example.cpp -o example`python3-config --extension-suffix`

但是我得到了这个输出:

c++: error: python3 -m pybind11 --includes: No such file or directory

现在,我通过 conda 安装了 python,并且我有一个包含所有所需包的环境。如果我在命令提示符下运行命令 python3 -m pybind11 --includes 我得到这个输出:

-I/home/luca/Programs/miniconda3/envs/fcg/include/python3.7m -I/home/luca/Programs/miniconda3/envs/fcg/lib/python3.7/site-packages/pybind11/include

显然,我必须在正确的 conda 环境中。因此,如果 c++ 无法使用正确的 conda 环境,我会措辞不当。但是,即使我替换了直接在 C++ 命令中获得的输出,所以运行:

c++ -O3 -Wall -shared -std=c++11 -fPIC '-I/home/luca/Programs/miniconda3/envs/fcg/include/python3.7m -I/home/luca/Programs/miniconda3/envs/fcg/lib/python3.7/site-packages/pybind11/include' prova.cpp -o prova'python3-config --extension-suffix'

我得到了其他输出:

prova.cpp:1:10: fatal error: pybind11/pybind11.h: No such file or directory
#include <pybind11/pybind11.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.

我真的不知道如何解决它。感谢那些可以提供帮助的人:)

最佳答案

您需要在 c++ 行的前面包含 -I“包含 pybind11.h 文件的文件夹 pybind11 的路径”。

-I"path"告诉编译器在哪里可以找到头文件。

关于python - 使用 pybind11 构建 cpp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61758906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com