![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.
没有合适的资源?快使用搜索试试~ 我知道了~
xlnt是开源的内存中读、写xlsx文件的C++库 本资料使用VC2022下编译读写excel库的教程
共618个文件
cpp:130个
hpp:112个
obj:80个
5星 · 超过95%的资源 需积分: 5 26 下载量 153 浏览量
2023-04-13
14:30:44
上传
评论 3
收藏 33.87MB RAR 举报
温馨提示
xlnt 是一个 C ++ 库,用于处理电子表格excel,允许VC++从 XLSX 文件读取 / 写入。支持多平台编译,支持Windows、UNIX(如Linux)、Mac等操作系统。也可跨平台交叉编译,用于给Arm、PowerPC等嵌入式平台使用。 本文主要讲解其在win11 x64系统下使用VS2022的编译方法,包含xlnt库及配置所需的第3方库的资源,在Win11 x64,VS2022下编译。 需要注意的是,在VS2022中需要安装C++ Cmake工具组件。
资源推荐
资源详情
资源评论
收起资源包目录
xlnt是开源的内存中读、写xlsx文件的C++库 本资料使用VC2022下编译读写excel库的教程 (618个子文件)
xlnt.3 61KB
CMakeDetermineCompilerABI_CXX.bin 51KB
CMakeDetermineCompilerABI_C.bin 51KB
miniz.c 309KB
xmlparse.c 196KB
xmlparse.c 196KB
genx.c 56KB
genx.c 56KB
xmltok.c 44KB
xmltok.c 44KB
xmltok_impl.c 44KB
xmltok_impl.c 44KB
xmlrole.c 33KB
xmlrole.c 33KB
CMakeCCompilerId.c 25KB
char-props.c 18KB
char-props.c 18KB
sha512.c 9KB
sha1.c 6KB
xmltok_ns.c 3KB
xmltok_ns.c 3KB
main.c 33B
setup.cfg 238B
cmake.check_cache 86B
.clang-format 2KB
ucm.cmake 23KB
pybind11Tools.cmake 8KB
FindPythonLibsNew.cmake 8KB
CMakeCXXCompiler.cmake 5KB
FindArrow.cmake 5KB
cmake_install.cmake 4KB
XlntConfigVersion.cmake 3KB
XlntTargets.cmake 3KB
FindEigen3.cmake 3KB
CMakeCCompiler.cmake 3KB
FindCatch.cmake 2KB
cmake_install.cmake 2KB
cmake_uninstall.cmake 2KB
XlntConfig.cmake 1KB
cmake_install.cmake 1KB
XlntTargets-debug.cmake 860B
CTestTestfile.cmake 396B
CMakeSystem.cmake 395B
CTestTestfile.cmake 386B
CTestTestfile.cmake 356B
pkg-config.pc.cmake 293B
CMakeRCCompiler.cmake 276B
CMake Overview 0B
COPYING 1KB
xlsx_consumer.cpp 124KB
xlsx_producer.cpp 111KB
aes.cpp 86KB
number_formatter.cpp 64KB
worksheet_test_suite.cpp 56KB
workbook.cpp 48KB
compound_document.cpp 38KB
number_format_test_suite.cpp 35KB
worksheet.cpp 33KB
serialization_test_suite.cpp 32KB
cell_test_suite.cpp 27KB
CMakeCXXCompilerId.cpp 25KB
cell.cpp 23KB
zstream.cpp 19KB
workbook_test_suite.cpp 18KB
header_footer_code.cpp 16KB
custom_value_traits.cpp 16KB
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
img2xlsx.cpp 8KB
number_format.cpp 8KB
named_range_test_suite.cpp 8KB
range.cpp 7KB
path.cpp 7KB
header_footer.cpp 7KB
cell_iterator.cpp 7KB
cell_reference.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
format.cpp 6KB
constants.cpp 6KB
range_reference.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
datetime_test_suite.cpp 5KB
共 618 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
tianshan12345
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页