-
在此外处所看的<<给法度员介绍一些C++开源库>>,记录给大师共同窗习
添加时间:2013-6-28 点击量:起首申明这篇文章不是出自我手,大师共同窗习。
引用地址:http://oss.org.cn/?action-viewnews-itemid-61998。
C++开源库,迎接补充。
C++在“贸易应用”方面,曾经是全国第一的开辟说话,但这一桂冠已经被java抢走多年。因为当今贸易应用法度类型,已经从桌面应用敏捷转移成Web应 用。当Java横行全国之后,MS又忽然发力,搞出C#说话,有的曾经的C++法度员,认为C++要就此沉沦,未料,这三年来,C++的生命力忽然被 严重地加强了。主力原因就是开源的软件、根蒂根基软件(比如并发原生支撑,比如Android必然要推出原生的SDK)、各类跨平台应用的呈现。
开源C++库必须具有以下特点:必须是成熟的产品、跨平台的产品、相对通用的库。
一、通用标准类
STL:C++标准模板库,呵呵,它也是开源的嘛。
boost:C++准标准库,它是强大地,江湖称之“千锤百炼”。
-------若把握,必横行世界。
deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但若是你只想要一个表达式解析,不想要拖上重大的boost库时……支撑一下国货。
iconv /iconvpp : (C情势的编码转换函数库,
二、XML解析库
C++的XML相干库不少,然则大项目组其实都是C库,应用起来天然不那么简便。此中基于DOM的有TinyXml,基于SAX的当然是Xerces。前者小巧快捷,便于应用,合适做数据互换。后者则是全功能的XML解析器。
哥更偏向于TingyXml.小巧啊!
xerces-c :强大的XML解析库了,不是仅仅在开源库里,你尽管把贸易的算在内。当然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的东东来支撑各国编码转换,是更强大,但我感觉有小小的,开源的iconv在前不就够了?
按照博友的一篇博文http://www.cnblogs.com/wuqi924/archive/2010/11/18/1880950.html
对三个轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对比如下:
解析这个3.3万行,1.5M大小的xml,三个库分别花了
SlimXml: 22ms
TinyXml: 54ms
RapidXml: 4ms!
结论是,RapidXml果真很强悍,居然比SlimXml快5倍多。
斗劲欣慰的是,在没有很存眷效力的景象下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是简单小巧路线,源代码只有 32k,而TinyXml和RapidXml的源码分别是147k和141k,有如许的效力可以合意了。因为这个库首要还是针对几十上百行的小文件,解析希罕大的xml不在我推敲的局限之内。
还有irrlicht(鬼火引擎)的irrXMl解析器。
xsd (XML 与 C++数据布局的绑定对象)。(贸易应用要钱)
三、数据库
我斗劲喜好OTL(用于连接数据库)。其他的没用过
四、多媒体类
---摘录别处,本身,没用过
SDL (Simple DirectMedia Layer/多媒体直接接见层,用于游戏编程)。
响应的c开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska有名的多媒体播放器 TCPMP 全国有名的跨平台、嵌入式手持设备视频播放器,
五、收集开辟类
1、gSOAP SOAP和谈的C++支撑库及代码生成对象。
2、ACE 收集编程研究推荐。
ACE合适于研究,大型收集编程上效力不足,大型网游里面几乎没有效到ACE的,很多用了ACE的项目也被证了然效力不高。
除了ACE之外,还有很多体系和收集编程方面的法度库。比如在线程库方面,还有ZThread、boost::thread,若是放大到C/C++范畴, 还有APR,还有CII。在文件和目次操纵方面,boost也有响应的组件,而在收集编程方面有socket++,还有boost::asio,将来的 C++0X中几乎必然有一个收集编程和一个线程库。然而今朝看来,ACE仍然是进行体系和高机能收集编程的推荐,其地位在一段时候内不会被撼动。它不单是 一个实用的法度库、框架集,还是一个典范的设计模式应用典范,很是值得进修。
3、有博友答复到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
六、GUI库
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,你仍然可以、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。
十一、中心件
1、分布式对象中心件:ICE
ICE是分布式对象中心件范畴里的后起之秀,可以大致地将其视为“改进版”的CORBA。今朝应用在一些大型项目傍边,此中包含波音公司主持的下一代陆军作战体系。
ICE的一个希罕价值是其代码的典范意义。因为ICE的呈现较晚,开辟者斗劲体系地应用了新的C++编程风格,所以成为了研读C++代码的杰出目标。
2、消息中心件: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++法度设备经管题目的一个超卓规划。
十四、3D游戏引擎:
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++
长处:不错的社区支撑;多量功能;
毛病:难学;
5、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游戏,仿真,很周全。一向在做更新。
毛病:参考材料斗劲少。中文文档也斗劲少。官方参考材料斗劲少。然则读源代码可以加快懂得,应用。
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》