pybind11 用于 C++14/C++17

Posted

技术标签:

【中文标题】pybind11 用于 C++14/C++17【英文标题】:pybind11 for C++14/C++17 【发布时间】:2020-09-01 07:02:46 【问题描述】:

pybind11 是否可以无缝地为 C++14 和 C++17 工作?

我打算将 Boost.python 用于我目前使用 C++11 的项目。将来我可能必须升级到 C++14 或 C++17。所以我想了解这里的正确选择是什么 - boost.python ot pybind11。

来自 pybind11 文档,它说 -“C++11 和 Python 之间的无缝可操作性”所以有点困惑

【问题讨论】:

我认为它至少需要 11 个,但仅适用于以后的版本。 我很困惑在 boost.python 和 pybind11 之间做出决定。你能帮忙吗 怎么样?您还没有告诉我们您的要求超出了“必须使用 c++14 或 c++17”。我会假设两者都会起作用,所以这不是一个有效的决策点。 它已经支持一些C++17新特性:pybind11.readthedocs.io/en/stable/advanced/cast/…;无论如何,C++ 标准通常是向后兼容的 @Botje 我有一个 c++ 库(订阅中间件,接收更新并反序列化数据)。我必须在其上编写一个 python 包装器以供 python 客户端使用。 【参考方案1】:

是的,它适用于 C++11/14/17/20,请参阅文档中的 corresponding section。

默认情况下,pybind11 将使用编译器默认值或 pybind11 要求的最低标准编译模块,以较高者为准。

【讨论】:

以上是关于pybind11 用于 C++14/C++17的主要内容,如果未能解决你的问题,请参考以下文章

linux如何查看编译器支持的C++版本(支持C++11支持C++14支持C++17支持C++20)(编译时不指定g++版本,默认使用老版本编译)

C 语言调用 pybind11 生成的动态链接库

使用pybind11来快速开发python程序扩展库

混合编程:如何用pybind11调用C++

pybind11 返回 numpy 对象数组

使用pybind11开发python扩展库