pybind11C++ 的 Python 绑定

联合创作 · 2023-09-28 12:49

pybind11 可实现 C++11 和 Python 之间的无缝操作。


pybind11 是一个轻量级的只包含一组头文件的 C++ 库,可以在 Python 中使用 C++ 类型。主要用于创建已有 C++ 代码的 Python 封装版本。其目的和语法类似于 Boost.Python 库。为什么要创建这个项目的原因就是因为 Boost 。作者认为 Boost 很大很复杂。而目前的 C++11 兼容的编译器使用已经非常广泛,所以希望开发一个更轻量级更具备兼容性的项目。


除去注释之外,该项目的核心头文件只有 2500 行左右代码,依赖于 Python (2.7 或者 3.x) 和标准 C++ 库。这么精简的实现有赖于新的 C++11 语言特性。特别是元组、Lambda 函数以及可变模板。自从项目创建以来,其增长已经超过了 Boost.Python。


核心特性



  • Functions accepting and returning custom data structures per value, reference, or pointer


  • Instance methods and static methods


  • Overloaded functions


  • Instance attributes and static attributes


  • Exceptions


  • Enumerations


  • Callbacks


  • Custom operators


  • STL data structures


  • Iterators and ranges


  • Smart pointers with reference counting like std::shared_ptr


  • Internal references with correct reference counting


  • C++ classes with virtual (and pure virtual) methods can be extended in Python



支持的编译器:



  1. Clang/LLVM (any non-ancient version with C++11 support)


  2. GCC (any non-ancient version with C++11 support)


  3. Microsoft Visual Studio 2015 or newer


  4. Intel C++ compiler v15 or newer


浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报