![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++和wxWidgets的安川控制器程序导入导出系统.zip
共337个文件
hpp:120个
cpp:80个
h:43个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 132 浏览量
2024-11-14
04:38:47
上传
评论
收藏 950KB ZIP 举报
温馨提示
# 基于C++和wxWidgets的安川控制器程序导入导出系统 ## 项目简介 安川控制器程序导入导出系统(Yaskawa Controller Program Import and Export System,简称Ycpies)是一个用于管理和操作安川控制器程序的图形用户界面应用。该系统支持从二进制格式和Excel格式导入导出程序,并提供了丰富的功能来处理程序的加载、保存、编辑和查看。 ## 项目的主要特性和功能 1. 程序导入导出支持从二进制格式和Excel格式导入导出程序,方便用户进行程序的编辑和查看。 2. 指令集管理提供指令集的加载和管理功能,确保程序解析的准确性。 3. 用户界面基于wxWidgets框架构建的图形用户界面,提供友好的操作体验。 4. 配置管理支持保存和加载应用程序设置,如默认的打开和保存路径、窗口大小和位置。 5. 错误处理在处理文件导入和导出时,捕获并处理可能出现的错误,确保系统的稳定性。
资源推荐
资源详情
资源评论
收起资源包目录
(源码)基于C++和wxWidgets的安川控制器程序导入导出系统.zip (337个子文件)
buildfile 3KB
miniz.c 314KB
xmlparse.c 200KB
genx.c 59KB
xmltok_impl.c 47KB
xmltok.c 45KB
xmlrole.c 36KB
char-props.c 19KB
libcsv.c 16KB
sha512.c 11KB
sha1.c 6KB
xmltok_ns.c 5KB
setup.cfg 248B
ChangeLog 6KB
ucm.cmake 24KB
pybind11Tools.cmake 8KB
FindPythonLibsNew.cmake 8KB
FindArrow.cmake 5KB
FindEigen3.cmake 3KB
FindCatch.cmake 2KB
pkg-config.pc.cmake 303B
COPYING 15KB
xlsx_consumer.cpp 117KB
xlsx_producer.cpp 109KB
aes.cpp 89KB
number_formatter.cpp 65KB
workbook.cpp 48KB
compound_document.cpp 38KB
worksheet.cpp 33KB
shared_variable.cpp 31KB
cell.cpp 23KB
mainwindow.cpp 23KB
zstream.cpp 20KB
program_t.cpp 19KB
header_footer_code.cpp 17KB
custom_value_traits.cpp 17KB
time.cpp 15KB
xlsx_crypto_producer.cpp 14KB
xlsx_crypto_consumer.cpp 14KB
manifest.cpp 10KB
number_format.cpp 10KB
range.cpp 9KB
header_footer.cpp 9KB
style.cpp 8KB
path.cpp 8KB
cell_iterator.cpp 8KB
cell_reference.cpp 8KB
encryption_info.cpp 8KB
range_iterator.cpp 8KB
vector_streambuf.cpp 8KB
instruction_set_t.cpp 7KB
format.cpp 7KB
index_types.cpp 7KB
color.cpp 7KB
fill.cpp 7KB
font.cpp 7KB
ext_list.cpp 6KB
streaming_workbook_reader.cpp 6KB
raw_program.cpp 6KB
fix-program_options-bug.cpp 6KB
datetime.cpp 6KB
range_reference.cpp 6KB
main.cpp 6KB
constants.cpp 6KB
border.cpp 6KB
base64.cpp 6KB
export_extra.cpp 6KB
rich_text.cpp 5KB
phonetic_pr.cpp 5KB
cell_vector.cpp 5KB
conditional_format.cpp 5KB
variant.cpp 5KB
exceptions.cpp 5KB
input_index_dialog.cpp 5KB
spreadsheet_drawing.cpp 5KB
streaming_workbook_writer.cpp 4KB
page_setup.cpp 4KB
date.cpp 4KB
alignment.cpp 4KB
worksheet_iterator.cpp 4KB
timedelta.cpp 4KB
about_dialog.cpp 4KB
sha.cpp 4KB
named_range.cpp 4KB
hyperlink.cpp 4KB
new_dialog.cpp 3KB
protection.cpp 3KB
page_margins.cpp 3KB
open_extra.cpp 3KB
override_program_dialog.cpp 3KB
import_extra.cpp 3KB
comment.cpp 3KB
unicode.cpp 3KB
sheet_protection.cpp 3KB
open_stream.cpp 3KB
text_width.cpp 3KB
relationship.cpp 2KB
uri.cpp 2KB
rich_text_run.cpp 2KB
hash.cpp 2KB
共 337 条
- 1
- 2
- 3
- 4
资源评论
t0_54coder
- 粉丝: 2457
- 资源: 4756
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip
- (源码)基于Java的DVD管理系统.zip
- (源码)基于Java RMI的共享白板系统.zip
- (源码)基于Spring Boot和WebSocket的毕业设计选题系统.zip
- (源码)基于C++的机器人与船舶管理系统.zip
- (源码)基于WPF和Entity Framework Core的智能货架管理系统.zip
- SAP Note 532932 FAQ Valuation logic with active material ledger
- (源码)基于Spring Boot和Redis的秒杀系统.zip
- (源码)基于C#的计算器系统.zip
- (源码)基于ESP32和ThingSpeak的牛舍环境监测系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功