![pybind11 logo](https://github.com/pybind/pybind11/raw/master/docs/pybind11-logo.png)
# pybind11 — Seamless operability between C++11 and Python
[![Documentation Status](https://readthedocs.org/projects/pybind11/badge/?version=master)](http://pybind11.readthedocs.org/en/master/?badge=master)
[![Documentation Status](https://readthedocs.org/projects/pybind11/badge/?version=stable)](http://pybind11.readthedocs.org/en/stable/?badge=stable)
[![Gitter chat](https://img.shields.io/gitter/room/gitterHQ/gitter.svg)](https://gitter.im/pybind/Lobby)
[![Build Status](https://travis-ci.org/pybind/pybind11.svg?branch=master)](https://travis-ci.org/pybind/pybind11)
[![Build status](https://ci.appveyor.com/api/projects/status/riaj54pn4h08xy40?svg=true)](https://ci.appveyor.com/project/wjakob/pybind11)
**pybind11** is a lightweight header-only library that exposes C++ types in Python
and vice versa, mainly to create Python bindings of existing C++ code. Its
goals and syntax are similar to the excellent
[Boost.Python](http://www.boost.org/doc/libs/1_58_0/libs/python/doc/) library
by David Abrahams: to minimize boilerplate code in traditional extension
modules by inferring type information using compile-time introspection.
The main issue with Boost.Python—and the reason for creating such a similar
project—is Boost. Boost is an enormously large and complex suite of utility
libraries that works with almost every C++ compiler in existence. This
compatibility has its cost: arcane template tricks and workarounds are
necessary to support the oldest and buggiest of compiler specimens. Now that
C++11-compatible compilers are widely available, this heavy machinery has
become an excessively large and unnecessary dependency.
Think of this library as a tiny self-contained version of Boost.Python with
everything stripped away that isn't relevant for binding generation. Without
comments, the core header files only require ~4K lines of code and depend on
Python (2.7 or 3.x, or PyPy2.7 >= 5.7) and the C++ standard library. This
compact implementation was possible thanks to some of the new C++11 language
features (specifically: tuples, lambda functions and variadic templates). Since
its creation, this library has grown beyond Boost.Python in many ways, leading
to dramatically simpler binding code in many common situations.
Tutorial and reference documentation is provided at
[http://pybind11.readthedocs.org/en/master](http://pybind11.readthedocs.org/en/master).
A PDF version of the manual is available
[here](https://media.readthedocs.org/pdf/pybind11/master/pybind11.pdf).
## Core features
pybind11 can map the following core C++ features to 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
- Arbitrary exception types
- Enumerations
- Callbacks
- Iterators and ranges
- Custom operators
- Single and multiple inheritance
- 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
## Goodies
In addition to the core functionality, pybind11 provides some extra goodies:
- Python 2.7, 3.x, and PyPy (PyPy2.7 >= 5.7) are supported with an
implementation-agnostic interface.
- It is possible to bind C++11 lambda functions with captured variables. The
lambda capture data is stored inside the resulting Python function object.
- pybind11 uses C++11 move constructors and move assignment operators whenever
possible to efficiently transfer custom data types.
- It's easy to expose the internal storage of custom data types through
Pythons' buffer protocols. This is handy e.g. for fast conversion between
C++ matrix classes like Eigen and NumPy without expensive copy operations.
- pybind11 can automatically vectorize functions so that they are transparently
applied to all entries of one or more NumPy array arguments.
- Python's slice-based access and assignment operations can be supported with
just a few lines of code.
- Everything is contained in just a few header files; there is no need to link
against any additional libraries.
- Binaries are generally smaller by a factor of at least 2 compared to
equivalent bindings generated by Boost.Python. A recent pybind11 conversion
of PyRosetta, an enormous Boost.Python binding project,
[reported](http://graylab.jhu.edu/RosettaCon2016/PyRosetta-4.pdf) a binary
size reduction of **5.4x** and compile time reduction by **5.8x**.
- When supported by the compiler, two new C++14 features (relaxed constexpr and
return value deduction) are used to precompute function signatures at compile
time, leading to smaller binaries.
- With little extra effort, C++ types can be pickled and unpickled similar to
regular Python objects.
## Supported compilers
1. Clang/LLVM 3.3 or newer (for Apple Xcode's clang, this is 5.0.0 or newer)
2. GCC 4.8 or newer
3. Microsoft Visual Studio 2015 Update 3 or newer
4. Intel C++ compiler 16 or newer (15 with a [workaround](https://github.com/pybind/pybind11/issues/276))
5. Cygwin/GCC (tested on 2.5.1)
## About
This project was created by [Wenzel Jakob](http://rgl.epfl.ch/people/wjakob).
Significant features and/or improvements to the code were contributed by
Jonas Adler,
Sylvain Corlay,
Trent Houliston,
Axel Huebl,
@hulucc,
Sergey Lyskov
Johan Mabille,
Tomasz Miąsko,
Dean Moldovan,
Ben Pritchard,
Jason Rhinelander,
Boris Schäling,
Pim Schellart,
Ivan Smirnov, and
Patrick Stewart.
### License
pybind11 is provided under a BSD-style license that can be found in the
``LICENSE`` file. By using, distributing, or contributing to this project,
you agree to the terms and conditions of this license.
没有合适的资源?快使用搜索试试~ 我知道了~
C++第三方库xlnt-用于读写Excel文件
共428个文件
cpp:129个
hpp:110个
h:43个
需积分: 0 13 下载量 60 浏览量
2024-03-06
08:05:16
上传
评论
收藏 3.89MB ZIP 举报
温馨提示
C++第三方库xlnt-用于读写Excel文件
资源推荐
资源详情
资源评论
收起资源包目录
C++第三方库xlnt-用于读写Excel文件 (428个子文件)
xlnt.3 61KB
buildfile 3KB
miniz.c 309KB
xmlparse.c 193KB
genx.c 56KB
xmltok_impl.c 44KB
xmltok.c 42KB
xmlrole.c 33KB
char-props.c 18KB
sha512.c 9KB
sha1.c 6KB
xmltok_ns.c 3KB
setup.cfg 238B
.clang-format 2KB
ucm.cmake 23KB
pybind11Tools.cmake 8KB
FindPythonLibsNew.cmake 8KB
FindArrow.cmake 5KB
FindEigen3.cmake 3KB
FindCatch.cmake 2KB
pkg-config.pc.cmake 293B
xlsx_consumer.cpp 118KB
xlsx_producer.cpp 108KB
aes.cpp 86KB
number_formatter.cpp 64KB
worksheet_test_suite.cpp 52KB
workbook.cpp 47KB
compound_document.cpp 38KB
number_format_test_suite.cpp 35KB
worksheet.cpp 33KB
serialization_test_suite.cpp 28KB
cell_test_suite.cpp 27KB
cell.cpp 23KB
zstream.cpp 19KB
workbook_test_suite.cpp 17KB
header_footer_code.cpp 16KB
custom_value_traits.cpp 15KB
xlntpyarrow.lib.cpp 14KB
xlsx_crypto_producer.cpp 13KB
xlsx_crypto_consumer.cpp 13KB
numeric_util_test_suite.cpp 12KB
documentation.cpp 10KB
optional_tests.cpp 10KB
manifest.cpp 9KB
number_format.cpp 9KB
img2xlsx.cpp 8KB
named_range_test_suite.cpp 8KB
range.cpp 8KB
path.cpp 7KB
header_footer.cpp 7KB
cell_reference.cpp 7KB
cell_iterator.cpp 7KB
range_iterator.cpp 7KB
index_types.cpp 7KB
encryption_info.cpp 7KB
styles.cpp 7KB
vector_streambuf.cpp 6KB
color.cpp 6KB
style.cpp 6KB
string_to_double.cpp 6KB
fill.cpp 6KB
constants.cpp 6KB
format.cpp 5KB
rich_text_test_suite.cpp 5KB
streaming_workbook_reader.cpp 5KB
double_to_string.cpp 5KB
base64.cpp 5KB
helper_test_suite.cpp 5KB
font.cpp 5KB
range_reference.cpp 5KB
datetime_test_suite.cpp 5KB
border.cpp 5KB
datetime.cpp 5KB
range_test_suite.cpp 4KB
rich_text.cpp 4KB
fill_test_suite.cpp 4KB
cell_vector.cpp 4KB
time.cpp 4KB
ext_list.cpp 4KB
phonetic_pr.cpp 4KB
variant.cpp 4KB
spreadsheet_drawing.cpp 4KB
conditional_format.cpp 4KB
exceptions.cpp 4KB
alignment.cpp 4KB
date.cpp 4KB
named_range.cpp 4KB
streaming_workbook_writer.cpp 3KB
timedelta.cpp 3KB
worksheet_iterator.cpp 3KB
profiling.cpp 3KB
index_types_test_suite.cpp 3KB
sha.cpp 3KB
timedelta_test_suite.cpp 3KB
page_setup.cpp 3KB
color_test_suite.cpp 3KB
writer.cpp 3KB
hyperlink.cpp 3KB
style_test_suite.cpp 3KB
variant_tests.cpp 3KB
共 428 条
- 1
- 2
- 3
- 4
- 5
资源评论
QQVQQ...
- 粉丝: 901
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功