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
支持的编译器:
Clang/LLVM (any non-ancient version with C++11 support)
GCC (any non-ancient version with C++11 support)
Microsoft Visual Studio 2015 or newer
Intel C++ compiler v15 or newer