STL:C++标准模板库php
boost:C++准标准库,它是强大地,江湖称之“千锤百炼”。-------若掌握,必横行世界。html
deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但若是你只想要一个表达式解析,不想要拖上庞大的boost库时……支持一下国货。java
iconv /iconvpp : C形式的编码转换函数库node
C++的XML相关库很多,可是大部分其实都是C库,使用起来天然不那么轻便。其中基于DOM的有TinyXml,基于SAX的固然是Xerces。前者小巧快捷,便于使用,适合作数据交换。后者则是全功能的XML解析器。python
xerces-c :最强大的XML解析库了,不是仅仅在开源库里,你尽管把商业的算在内。固然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的东东来支持各国编码转换,是更强大,但我以为有小小的,开源的iconv在前不就够了?mysql
对三个轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对好比下:react
解析这个3.3万行,1.5M大小的xml,三个库分别花了linux
结论是,RapidXml果真很强悍,竟然比SlimXml快5倍多。c++
比较欣慰的是,在没有很关注效率的状况下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是简单小巧路线,源代码只有 32k,而TinyXml和RapidXml的源码分别是147k和141k,有这样的效率能够满意了。由于这个库主要仍是针对几十上百行的小文件,解析特别大的xml不在我考虑的范围以内。git
还有irrlicht(鬼火引擎)的irrXMl解析器。
xsd (XML 与 C++数据结构的绑定工具)。(商业使用要钱)
我比较喜欢OTL(用于链接数据库)。
SDL (Simple DirectMedia Layer/多媒体直接访问层,用于游戏编程)。
相应的c开源库有ffmpeg、mpeg四、aac、avc、libmad、mpeg一、flac、ac三、ac三、matroska著名的多媒体播放器 TCPMP 天下闻名的跨平台、嵌入式手持设备视频播放器,
一、gSOAP SOAP协议的C++支持库及代码生成工具。
二、ACE 网络编程研究首选。
ACE适合于研究,大型网络编程上效率不足,大型网游里面几乎没有用到ACE的,不少用了ACE的项目也被证实了效率不高。
除了ACE以外,还有不少系统和网络编程方面的程序库。好比在线程库方面,还有ZThread、boost::thread,若是放大到C/C++领域, 还有APR,还有CII。在文件和目录操做方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,将来的 C++0X中几乎确定有一个网络编程和一个线程库。然而目前看来,ACE仍然是进行系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不可是 一个实用的程序库、框架集,仍是一个典范的设计模式应用范例,很是值得学习。
三、有博友回复到POCO。我整理以下:
开源C++库,称为POCO(POrtable COmponents – 可移植元件),很是方便好用。
特性:
* 线程,程序同步及多线程编程高级抽象
* 流及文件系统访问
* 共享库将类加载
* 功能强大的日志和错误报告
* 安全及加密
* 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)
* XML解析 (SAX2 和 DOM) 及生成
* 配置文件及选项处理
* SQL数据库访问(ODBC, MySQL, SQLite)
能够运行的平台包括:
* Windows
* Mac OS X
* iPhone OS
* (embedded) Linux
* HP-UX
* Tru64
* Solaris
* QNX
BCG Windows平台下界面设计的第三方库,可让你的界面更美好,更具时代感。
wxWidgets :使用wxWidgets ,开发者能够基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库能够被C++, Python, Perl, and C#/.NET等开发语言使用。跟其它有些一样支持跨平台GUI开发工具不一样,基于wxWidgets的应用,拥有真实本地化的视觉及使用效果——由于,wxWidgets使用(各)平台原生的控件,而不是简单经过贴图去模拟。wxWidgets是使用普遍的,自由的,开源的,成熟的。
QT------界面(GUI)开发,支持C++/Java/Python/...多种语言。跨平台。最主要的好处是,API很是优美!Qt自己也不只仅只是作GUI编程,实际它基本上能够作OS-API能够作的任何事情。象网络/数据库/OpenGL/...都提供完美的支持。传统上Qt被认为是可移植的GUI库,但实际上Qt如今已是一个比较完整的可移植应用程序框架了,其中包含了大量的工具,好比正则表达式、Web和 Socket类、2D和3D图形、XML解析、SQL类等,甚至还包括了一个完整的容器类库,不过其王牌仍是GUI。在目前的跨平台GUI框架中,Qt成熟度最高,已经被一些大公司应用在关键产品中。因为Trolltech对Qt采用的dual license模式,该产品既能够从开源社区得到支持,又可以赚取足够的商业利润,所以其前景也使人比较有信心。Qt的主要技术特点是其元对象模型。Qt实际上使用的并非标准的C++,而是标准C++的一个扩展。它经过元对象模型扩展,实现了著名的signal/slot机制,而这一机制也成为Qt的最大特点和优点。
与Qt相似的可移植GUI框架还有wxWidget、FOX等
OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣的朋友能够玩一下。若是结合OpenCV,你能够作一些外行人以为很酷的程序。好比说用它的人脸识别函数,来对你的摄像头进行处理,判断人的动做等
GDAL,处理大图像。要是GIS专业的人确定会语言到很是大的tif影像,动则几个GB的航空影像。GDAL对大图像的读写支持是很是棒的(像多波段的图像均可以搞定)。 支持C++/Java/Python...
国外开源的GIS软件QGIS就是用了gdal
C的图形图像库较多,libjpeg、libpng、zlib、tiff、JBIG、最著名的开源形图像处理软件Cximage
boost::smart_ptr,Hans-Boehm GC
C/C++的内存管理是一个永恒的话题。通常来讲,C++的开发者倾向于本身管理内存。然而,出乎不少C++开发者意料的是,近期C++的一些领袖人物已经公开宣称,若是不配备自动内存管理机制,用C++编写安全可靠的大型程序是很是困难的。而Bjarne Stroustrup也曾对中国开发者建议,若是没有特别的理由,应该在大型项目中使用自动内存管理工具。所以,今天的C++开发者应当积极地学习和应用自动内存管理设施。
说到自动内存管理,比较轻量级的作法是boost::smart_ptr,而激进的作法是引入完整的GC机制。目前开源而又比较可靠的GC中,Hans- Boehm GC无疑是最受信赖的。做为一个保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特别是,使用这个GC,你仍然能够delete、free来本身管理内存,对于咱们编程习惯的冲击比较小。
OpenSSL
安全是今天进行C/C++编程没法回避和必须重视的问题。然而编写安全的应用程序,特别是跟网络相关的C/C++应用程序,是一件十分困难的事情。能够 说,整个业界目前在这个进程上仍然处于“初级阶段”。特别是涉及到大量的安全、密码学相关的算法、规范,若是让开发者本身摸索,其工做量和难度达到了不现实的程度。所以必须借助可靠的相关程序库才有可能提升程序的安全性。在这方面,OpenSSL是目前最好的选择,其内容之全面可靠,已经成为业界标杆。然 而,因为安全编程固有的复杂性,即便使用penSSL,开发工做仍然是很是繁琐的。所以咱们也但愿可以尽快看到更简单、更易用的C/C++安全程序库。
MTL
自1995年以来,C++在科学计算领域当中取得了巨大的突破。这主要归功于template技术的高级应用,使得C++在科学计算的性能方面取得了巨大的进步,一大批优秀的C++科学计算库涌现出来。好比Blitz++、POOMA、MTL、Boost::uBLAS。而这其中,MTL就功能丰富程度、 性能、开发支持和成熟程度来说,是比较突出的一个,所以能够优先考虑。值得一提的是,2002年,MTL与后来被Intel收购的KAI C++配合,曾经在性能评测中击败了FORTRAN。
一、分布式对象中间件:ICE
ICE是分布式对象中间件领域里的后起之秀,能够大体地将其视为“改进版”的CORBA。目前应用在一些大型项目当中,其中包括波音公司主持的下一代陆军做战系统。
ICE的一个特别价值是其代码的范例意义。因为ICE的出现较晚,开发者比较系统地应用了新的C++编程风格,因此成为了研读C++代码的良好目标。
二、消息中间件:ZeroMQ,总结的几种特性以下:
1) 消息系统中,它差很少是最简洁的,只是个简洁的API,有n多种语言的绑定,没有专门的服务器;
2) 性能很是优越,远远高于RabbitMQ、ActiveMQ、MSMQ等;
3) 适合作分布式和并发应用。
boost::regex
正则表达式是编程工做中最强有力的工具之一。C++的正则表达式支持一直以来是一个软肋。大约在2001年左右,boost中出现了regex库,初步解决了这个问题。可是最初的regex不管在效率上仍是可靠性方面都有一些问题,后来通过一次大规模的翻修以后,达到了比较完善的程度。
其余能够选择的替代品还有C语言的pcre库,Qt中的QRegExp类等。
Lua
随着软件系统愈来愈复杂,对软件的可配置型提出了愈来愈高的要求。传统上只要经过命令行参数来配置的系统,如今可能须要愈来愈多的方式和机制。目前愈来愈受欢迎、而且获得愈来愈多证明的作法,是将Lua嵌入到C/C++程序中,而用Lua程序做为配置脚本。这种作法的优点是,Lua语言强大灵活,能够适应 复杂的配置要求。同时,Lua便于嵌入C/C++程序,并且编译执行速度很是快,能够说是目前解决C/C++程序配置管理问题的一个出色方案。
1. Irrlicht http://irrlicht.sourceforge.net/
始于2003,次年即被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API.
优势:容易上手;跨平台;自带XML解析器;大的社区;
缺点:最近开发慢下来了
2. Panda3D http://www.panda3d.org/
由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。
优势:有用的社区;大量功能;按期开发;
缺点:缺少工具支持;极差的文档;
3. OGRE http://www.ogre3d.org/
图像引擎中最好的一个。2000年立的项。推荐使用C++语言。须要很是熟悉编程才行。初学者不宜。
优势:大量功能;优异的文档;大规模的社区;活跃的开发
缺点:不适合初哥;只有图像引擎
4. Crystal Space http://www.crystalspace3d.org/main/Main_Page
1997年发行,用C++编写的开源游戏引擎。推荐使用C++
优势:不错的社区支持;大量功能;
缺点:难学;
五、Delta3d http://www.delta3d.org/index.php
Delta3D是一款由美国海军研究学院(Naval Postgraduate School)开发的全功能游戏与仿真引擎,获得美国军方巨大的支持与丰厚的投资。该引擎应用领域极为普遍,如开发在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真的软件。它的标准化设计把一些知名开源软件和引擎如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library (CAL3D), 还有 OpenAL融为一体。Delta3D经过对这些底层模块进行隐藏封装,整合在一块儿从而造成了一个使用更加方便的高级API 函数库,使得开发者在必要的时候可以使用底层函数进行二次开发。Delta3D在软件系列中,处于中间层(Middle layer)的位置上。
优势:适合各类3D游戏,仿真,很全面。一直在作更新。
缺点:参考资料比较少。中文文档也比较少。官方参考资料比较少。可是读源代码能够加快理解,应用。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-----------------------------------------------------------------------------------------------------------------------------------------
(1)ACE
庞大、复杂,适合大型项目。开源、免费,不依赖第三方库,支持跨平台。
http://www.cs.wustl.edu/~schmidt/ACE.html
http://download.dre.vanderbilt.edu/
(2)Asio
Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发。
开源、免费,支持跨平台。
(3)POCO
POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程、线程同步、文件系统访问、流操做、共享库和类加载、套接字以及网络协议包括:HTTP、 FTP、SMTP 等;其自己还包含一个 HTTP 服务器,提供 XML 的解析和 SQL 数据库的访问接口。POCO库的模块化、高效的设计及实现使得POCO特别适合嵌入式开发。在嵌入式开发领域,因为C++既适合底层(设备I/O、中断处理等)和高层面向对象开发,愈来愈流行。
(4)libevent
Libevent是一个轻量级的开源高性能网络库,从它的官网标题:libevent-an event notification library就能知道它的机制是采用事件触发,封装了如下三种事件的响应:IO事件,定时器事件,信号事件。select模型来实现跨平台的操做,Windows环境下支持IOCP。Google的开源WEB浏览器Chromium在Mac和Linux版本中,也使用了Libevent,足见该库的质量。
(5)libev
libev和libevent很像,按照做者的介绍,能够做为libevent的替代者,可以提供更高的性能。
libev是一个高性能事件循环,所实现的功能就是一个强大的reactor。
http://software.schmorp.de/pkg/libev.html
(6)c++ sockets library
封装了sockets C API的C++类库。
支持SSL, IPv6, tcp 和 udp sockets, sctp sockets, http协议, 高度可定制的错误处理。
(7)libcurl
libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, TFTP. 支持SSL, HTTP POST, HTTP PUT, FTP上传, HTTP form上传,代理,cookies, 用户名与密码认证。
若是你开发的是客户端,libcurl是一个不错的选择。
-----------------------------------------------------------------------------------------------------------------------------------
一些库在各个项目常常重用.如jpeg,freetype,iconv 等.每次大型项目均会反复重用.所以按照原来项目规范,通常都放在项目libs目录下,但后来发现,每一个项目都作重复操做.也彻底没有必要.由于如今是将其归纲到一个comm_lib公用信息.
如下是经常使用库的ARM-Linux移植,我是放在/home/hxy/common_lib 目录下.按到移植规范,输出在 output/arm-linux下,库自己在 libs 下面.
如下是常见库的移植.在这里留做教学和备份用.
-------------------------------------------------------------------------------------------------------------------------------------------------------
[1]由 fffaraz 发起和维护。
内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
C++标准库,包括了STL容器,算法和函数等。
C++通用框架和库
音频,声音,音乐,数字化音乐库
生物信息,基因组学和生物技术
压缩和归档库
并发执行和多线程
数据库,SQL服务器,ODBC驱动程序和工具
调试库, 内存和资源泄露检测,单元测试
动力学仿真引擎
XML就是个垃圾,xml的解析很烦人,对于计算机它也是个灾难。这种糟糕的东西彻底没有存在的理由了。-Linus Torvalds
一些有用的库或者工具,可是不适合上面的分类,或者尚未分类。
用于建立开发环境的软件
C/C++编译器列表
在线C/C++编译器列表
C/C++调试器列表
C/C++集成开发环境列表
提升质量,减小瑕疵的代码分析工具列表
C/C++程序员必须熟练应用的开源项目 http://blog.csdn.net/langeldep/article/details/6293655