- 论坛徽章:
- 0
|
本帖最后由 breakerzhao 于 2012-09-13 15:43 编辑
通用功能 | General Function
这些库是包含了多种功能的综合性开发库、类库,一般目标是提供可移植的基础设施服务,例如 线程、网络功能 等。
P::Classes
活跃程度:2004-03 发布版本 1.0.0 beta1,2005-01 网站最近消息贴出 "We are not dead!" [2010-11 checked]
一个高度可移植的 C++ 应用程序框架。当前关注类型和线程安全的 Signal/Slot 机制,I/O 系统包括基于插件的网络协议透明的 I/O 架构,基于插件的应用程序消息日志框架,访问 SQL 数据库的类等。
ACDK
活跃程度:2006-03 公告 CVS 版下载 ACDK 5 a2 [2010-11 checked]
ACDK (Artefaktur Component Development Kit) 是一个平台无关的 C++ 组件框架,目标是实现类似于 Java 或者 .NET 中的框架,涉及的方面有:反射机制、线程、Unicode、废料收集、正则表达式、I/O、网络、SSL、SQL、实用工具、XML 等。还包括对 Java、Perl、Python、TCL、Lisp、COM 和 CORBA 的集成。
dlib C++ library
活跃程度:2010-11 发布版本 17.32 [2010-11 checked]
提供多种功能的跨平台综合库。涉及的方面有:数值计算 (Matrix)、网络功能 (Socket, streambuf, HTTP server)、线程、GUI、机器学习、图像处理(BMP 位图)、数据压缩与摘要、日志、单元测试框架、命令行解析、XML 解析、容器、序列化、BASE64 编解码、内存池管理 等。
Chilkat C++ Libraries
活跃程度:2010-07 发布 VC6-VC10 编译版本 9.1.0 [2010-11 checked]
提供一组库,包括:Zip、Mail、IMAP、加解密、MHT、XML、字符集、MIME、PFX、FTP 等。
PTypes
活跃程度:2007-06 发布版本 2.1.1 [2010-11 checked]
可以作为 STL 的简单替代品,提供可移植的线程(同步对象)和网络(Socket 和 命名管道)支持,也包括字符串、变体 (variant)、字符集、链表 等基础类型的实现。主要应用目标是的网络服务程序 和 robots 等。
LFC
活跃程度:2002-06 发布版本 0.5 [2010-11 checked]
一个提供通用目标的 C++ 类库、框架,涉及的方面有:通用数据结构、通用算法、文件、Socket、线程、GUI、数据库访问、通用设计模式、数据流、RTTI、持久化、多媒体(包括游戏开发与 3D 图形)、通用网络协议 (HTTP, FTP)、正则表达式 等。
线程 | Threads
pthreads
由 POSIX 定义的线程实现规范 POSIX threads,C 语言的 API,在各种 Unix/Linux 和 Windows 下都有支持,是一套移植性很好的通用线程库。
C++ Threads
活跃程度:2003-10 发布版本 3.6 [2010-11 checked]
C++ 封装的线程类,用于 Linux 开发的多线程支持。
ZThreads
活跃程度:2005-03 发布版本 2.3.2 [2010-11 checked]
一个跨平台,面向对象设计的线程和同步事务库。在 POSIX 和 Windows 下经过测试。
科学与并行计算 | Scientific & Parallel Computation
这个一开始可以分为两类:关于 数值计算 (Numeric Computation) 和 并行计算 的库,但是有相当一部分库同时涵盖这两种功能,并且现代的用于数学计算的程序越来越依靠并行处理来提升性能,所以就归到了一类。
Blitz++
Blitz++ 是一个高效的数值计算函数库,它的目的是建立一套具有 C++ 方便接口,同时又比 Fortran 速度更快的数值计算环境。通常,用 C++ 所写出的数值程序,比 Fortran 慢 20% 左右,因此 Blitz++ 正是要改掉这个差距。方法是利用 C++ 的 template 技术,程序执行甚至可以比 Fortran 更快。
CGAL
CGAL (Computational Geometry Algorithms Library) 是高效几何计算方面的 C++ 类库,CGAL 也有 Python 和 Matlab 的 API 接口。CGAL 应用的领域有:图形学、可视化、辅助设计与建模、GIS 等。
POOMA
POOMA (Parallel Object-Oriented Methods and Applications) 原先是由 Los Alamos National Laboratory (LANL) 开发的用于并行计算的 C++ 类库。
POOMA 提供近似于数学语法的高层语法,来简化算法的编程,并且自动处理多处理器之间的通信事务。POOMA 被用于物理模型的计算,例如:粒子物理计算。
FreePOOMA 是 POOMA 的继续项目,原先的 POOMA 已经很少维护了。
MTL
MTL (Matrix Template Library) 提供 矩阵 和 线性代数 计算的功能,是一个基于模板泛型设计,以高性能计算 (HPC: High-performance computing) 为目标的类库。
MTL 有 2 个版本:MTL4 和 MTL2,MTL4 是 2005 后重写的库。
OpenMP
OpenMP 不是一套复用目的的开发库,而是一组用于共享内存并行系统的多线程程序的一套指导规范,它由编译和运行环境支持,最新的 GCC、ICC、VC 都对 OpenMP 有所支持。OpenMP 规范支持的语言包括 C、C++ 和 Fortran。开发时,在源码中使用编译指示 (directive, #pragma) 指导编译器并行化,编译器自动将程序并行化,并在必要之处加入同步互斥语义。
Intel Compilers and Libraries
本来不想把 Intel Compilers and Libraries 放到这一类的,因为这个软件包含了除 开发库 外的编译和其它工具,但是由于使用此软件包能够在 Intel 平台下开发和生成出色性能的程序,以及对并行计算的强力支持,还是把它列出来了。这个软件包以及从 ICC 编译器增大到包括 VTune、Amplifier、Inspector、MKL (Math Kernel Library) 等各种性能工具和库的开发套件,是开发 Intel 平台高性能、并发程序的强力工具。
网络功能 | Network Communication
很多通用库和应用框架库,如 Boost.Asio,都有网络通信功能、异步网络 I/O 功能 (AIO) 或 Socket 封装库,这里只列出以 网络通信功能 为主要目的的开发库。
ACE
ACE Home:从这里开始了解 ACE,同时也是 ACE 之父 Schmidt 的主页。
ACE Repository:Schmidt 是 Vanderbilt 大学的教授,ACE 的源码可以从 Vanderbilt 大学的 SVN 仓库中下载。
ACE Docs:ACE 的 Doxygen 参考文档。
ACE (Adaptive Communication Environment) 中文翻译为 自适应通讯环境,由 Douglas Schmidt 发起,后来有其它人员参与。
ACE 是一套重量级的 C++ 网络功能库,它的特点是使用很多面向对象的设计模式来实现网络功能,并且有很好的跨平台能力。ACE 的框架中实现了很多概念,诸如:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态配置、并发执行和同步 等。
因为 ACE 的模式众多,所以使用者在清晰理解其概念的情况下,才会发挥 ACE 的效能。关于 ACE 的评价和学习步骤、资料,可以参考《学之者生,用之者死:ACE 历史与简评》(陈硕)。
A Stream Socket API for C++:http://www.pcs.cnu.edu/,Socket 封装。
A simple IOCP Server/Client Class:http://www.codeproject.com/,Windows Socket + IOCP 完成端口机制封装。在 Windows 下稍加更改可以让这个变成符合自己需要的小巧而高效的网络处理类。配文讲解的中文翻译在 vckbase。
XML 功能 | XML Functions
XML 是现代通用的数据保存格式,因为它的通用性和格式良好定义,被经常用在 数据存储、数据交换 和 接口说明 等功能中。先列举一些 XML 解析器 (XML Parser):
TinyXML:http://www.grinninglizard.com/tinyxml/,一个轻量级的 XML Parser.
MSXML
微软的 XML Parser,全称 Microsoft Core XML Services,采用 COM 的接口操作形式,提供 DOM 和 SAX2 API、XML Schema (XSD)、XPath、XSLT 功能。
xml4c:http://www.alphaworks.ibm.com/tech/xml4c,IBM 的重量级 XML Parser,C++ 实现,支持 100 多种字符编码。
Xerces:http://xml.apache.org/xerces-c,Apache 的 XML Parser,支持少数的字符编码,如 ASCII、UTF-8、UTF-16 等,功能包括验证 DTD、SAX 和 DOM API 等。
libxml++:http://libxmlplusplus.sourceforge.net/,对的 libxml (The XML C parser and toolkit of Gnome) 解析器的 C++ 封装。
XMLBooster:http://www.xmlbooster.com/,使用 DOM 和 SAX 两大主流 XML 解析办法之外的解析器。
下面列举一些 XML 的功能库:
Xalan:http://xml.apache.org/xalan-c/,Xalan 可以将 XML 文档转换为 HTML、纯文本或者其它 XML 类型文档。
gSOAP:http://gsoap2.sourceforge.net/,SOAP/Web Services 的一个 C++ 开源实现。
SOAP/Web Services in ATL Server
ATL Server Reference in MSDN (VS :微软对 ATL Server 库的支持降低了,在 MSDN Library 中,最后一个有 ATL Server 参考的版本是 VS8。因为现在微软主推的 .Net 框架中已包含 HTTP 和 SOAP 等 Web 功能(WCF 等)。
ATL Server Library and Tools in CodePlex:ATL Server 现在在 CodePlex 上托管和维护,可以在这里得到 ATL Server 最新的消息。
这是微软的 SOAP/Web Services 功能。原先微软有一个 SOAP Toolkit 的库,实现 SOAP/Web Services 功能,但后来被废弃了,并移入了 .Net 框架中。所以要使用本地代码 C/C++ 实现的 SOAP,就要使用 ATL Server 库中的 SOAP/Web Services 功能。ATL Server 库除了 SOAP 之外还提供其它 Web 功能,例如 HTTP 实现。
eXist:http://exist.sourceforge.net/,持续化 XML 存储,XML 数据库。
Simple XML Persistence Library (SXP):http://sxp.sourceforge.net/,将对象序列化为 XML 的轻量级的 C++ 库,用于持久存储。
持久存储 | Persistence & Storage
通常 持久存储 表示的概念包括:(1) 将类型(POD 类型、类对象、容器)序列化为二进制数据。(2) 提供基于文件/流的操作。(3) 提供基于数据库的操作。对于 (3) 各数据库管理软件 (DBMS) 大多都提供自己的 C/C++ API,在 Windows 下更有 ODBC、OLE/DB 这种中间适配层提供统一的操作接口。下面只列出一些轻量级、开源的持久化功能。
s11n:http://s11n.net/,一个基于 STL 的 C++ 库,用于序列化 POD 类型、STL 容器以及用户定义类型。
MySQL Connector/C++:MySQL 5.1 Connector/C++ 参考,MySQL 数据库客户端操作的 C++ API。默认发布的 MySQL 安装包中包含其 C 语言的 API (MySQL Connector/C)。
SQLite:http://www.sqlite.org/,轻量级的 SQL DBMS,没有 SQL 的服务器端,单纯基于文件存储。提供 API 支持,使用户执行 SQL 语句来查询/操纵数据,Firefox 3 就使用 SQLite 保存其配置数据。
加解密 | Cryptographic
Crypto++:Crypto++ Sourceforge Project, http://www.cryptopp.com/。C++ 封装的加解密算法库。Crypto++ 是各种算法的合集,包括对称密码、非对称密码、摘要算法。
OpenSSL:http://www.openssl.org/。C API 的加解密算法库,以及 SSL 协议实现。OpenSSL 不只是加解密算法库,还包含网络功能(包括未使用和使用加密通道 SSL)和实用工具。
日志 | Logging
Log for C++ (Log4cpp)
Log4cpp 主要用于 C++ 程序中写日志,有着较强的跨平台移植能力。除了日志功能外,Log4cpp 中包括很多可移植的基础功能,例如:同步功能 (Condition, CriticalSection, Event, Mutex, Semaphore)、网络功能 (Socket, ServerSocket, DatagramSocket, SocketInputStream, SocketOutputStream)、文件监控 (FileWatchdog)、智能指针 (ObjectPtrT)、字符串处理 (StrictMath, StringHelper, StringTokenizer)、线程支持 等。
Boost.Log:http://sourceforge.net/projects/boost-log/,用于日志记录的 Boost 库,目前没有放入 Boost 发布包中。
log4cxx:http://logging.apache.org/log4cxx/,Apache 出的日志功能库。
glog:http://code.google.com/p/google-glog/
Log4cplus:http://log4cplus.sourceforge.net/
Logging In C++:http://www.drdobbs.com/,这是 DrDobbs 上的一篇文章,教你怎么写出一个 C++ Logging 功能类。
函数式编程 | Functional Programming
Boost.Lambda:Boost.Lambda 是 Boost 提供的函数式编程特性。
The Functional C++ Library (FC++):http://www.cc.gatech.edu/,用模板库来实现 C++ 的函数式编程。
FACT!:http://www.fz-juelich.de/,另一个实现 C++ 函数式编程的模板库。
杂项 | MISC
CppUnit:CppUnit Sourceforge Project,一个 C++ 的单元测试框架,由 JUnit 移植而来,使用派生测试类的方式产生测试用例。
-------------------------------------------
更新说明列表
[2010-11] 最初撰写
[2010-12] 基本补全各个类别的开发库。
[2010-12] 发现实际上有很多功能类似的开发库、类库,在 Sourceforge.net 上一搜就一大堆。这样列举不好,记忆不深,费时,意义也很小,觉得需自己仔细用过,并深入理解、积累经验后才能对一个库有所了解,而列举库的形式可以用一些 网络书签服务 来做,更容易检索。
[2011-02] 修正一些开发库的收藏地址和描述。 |
|