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。
核心特性Functionsacceptingandreturningcustomdatastructurespervalue,reference,orpointer
Instancemethodsandstaticmethods
Overloadedfunctions
Instanceattributesandstaticattributes
Exceptions
Enumerations
Callbacks
Customoperators
STLdatastructures
Iteratorsandranges
Smartpointerswithreferencecountinglikestd::shared_ptr
Internalreferenceswithcorrectreferencecounting
C++classeswithvirtual(andpurevirtual)methodscanbeextendedinPython
支持的编译器:
Clang/LLVM(anynon-ancientversionwithC++11support)
GCC(anynon-ancientversionwithC++11support)
MicrosoftVisualStudio2015ornewer
IntelC++compilerv15ornewer
评论