pybind11 - C++ 的 Python 绑定
软件简介
pybind11 可实现 C++11 和 Python 之间的无缝操作。
pybind11 是一个轻量级的只包含一组头文件的 C 库,可以在 Python 中使用 C 类型。主要用于创建已有 C 代码的
Python 封装版本。其目的和语法类似于
Boost.Python
库。为什么要创建这个项目的原因就是因为 Boost 。作者认为 Boost 很大很复杂。而目前的 C11
兼容的编译器使用已经非常广泛,所以希望开发一个更轻量级更具备兼容性的项目。
除去注释之外,该项目的核心头文件只有 2500 行左右代码,依赖于 Python (2.7 或者 3.x) 和标准 C 库。这么精简的实现有赖于新的
C11 语言特性。特别是元组、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