c++开发库,C++开源
在“商业应用”方面,C曾经是世界第一的开发语言,但是这个头衔已经被java抢走很多年了。由于今天的商业应用类型,它已经迅速从桌面应用转移到Web应用。在Java横行全球的时候,MS突然发力,想出了C#语言。曾经有一大批前C程序员认为C要沉了。没想到,这三年,C的生命力突然被严重增强。主要原因是开源软件、基础软件(比如并发原生支持,比如Android必须推出原生SDK)以及各种跨平台应用的出现。
c开源库必须具备以下特征:必须是成熟的产品,跨平台的产品,相对通用的库。
一.一般标准等级
STL: C标准模板库,呵呵,也是开源的。
Boost: C准标库,功能强大,江湖人称“磨炼”。
3354-如果你掌握了它,你将漫游世界。
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对比如下:
需要三个库来解析这个33,000行、1.5兆大小的xml。
slim XML:22毫秒
TinyXml:54毫秒
rapid XML:4毫秒!
总之,RapidXml真的很强大,比SlimXml快5倍以上。
值得庆幸的是,SlimXml仍然比TinyXml快2.5倍,而不太注重效率。SlimXml走的是简单紧凑的路线,源代码只有32k,而TinyXml和RapidXml的源代码分别是147k和141k,这样的效率我们也能满意。因为这个库主要用于几十行或几百行小文件,所以解析非常大的xml超出了我的考虑范围。
以及irrlicht(杰克灯引擎)的irrXMl解析器。
Xsd (XML和c数据结构之间的XML绑定工具)。(商业使用要花钱)
三。数据库资料库
我更喜欢OTL(用于连接数据库)。其他的不用。
四。多媒体类别
—节选自别处,我自己,未使用
SDL(用于游戏编程的简单直接媒体层/多媒体直接访问层)。
对应的C开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska,著名的多媒体播放器TCPMP,世界著名的跨平台和嵌入式手持视频播放器、
动词(verb的缩写)网络开发类别
1.gSOAP SOAP协议的c支持库和代码生成工具。
2.ACE网络编程研究是首选。
ACE适合研究,大规模网络编程效率不足。大型网游几乎不使用ACE,很多使用ACE的项目也被证明效率低下。
除了ACE,还有很多系统和网络编程的库。比如线程库方面,放大到C/C域就有ZThread,boost:thread,APR,CII。在文件和目录操作方面,boost也有相应的组件,而在网络编程方面,有socket和boost:asio。未来的C 0X几乎肯定会有网络编程和线程库。但目前,ACE仍然是系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不仅是一个实用的库和框架集,也是设计模式的典型应用示例,值得学习。
3.有博主回复POCO。我整理出来如下:
c开源库,叫做POCO(Portable ComponentsPortable Components),非常方便易用。
特点:
*线程、程序同步和多线程编程高级抽象
*流和文件系统访问
*共享库加载类。
*强大的日志和错误报告
*安全性和加密
*网络编程(TCP/IP套接字、HTTP客户端和HTTP服务器、FTP、SMTP、POP3等。)
* XML解析(SAX2和DOM)和生成
*配置文件和选项处理
* SQL数据库访问(ODBC、MySQL、SQLite)
可以运行的平台包括:
* Windows
*麦克OS X
* iPhone操作系统
*(嵌入式)Linux
*惠普UX公司
* Tru64
* Solaris
* QNX
不及物动词图形用户界面库
BCG Windows平台下的界面设计第三方库,可以让你的界面更好,更有时代感。
wxWidgets:使用WxWidgets,开发者可以基于同一套代码为Win32、Mac OS X、GTK、X11、Motif、Wince等平台开发应用。wxWidgets库可供C、Python、Perl、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采用双许可模式,这款产品不仅可以获得开源社区的支持,还可以赚取足够的商业利润,因此其前景也是相当有信心的。
Qt的主要技术特征是它的元对象模型。Qt实际上使用的不是标准C,而是标准C的一个扩展,通过元对象模型的扩展,实现了著名的信号/槽机制,这个机制也成为了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编写安全可靠的大型程序是非常困难的。比雅尼斯特劳斯特鲁普还向中国开发者建议,如果没有特殊原因,应该在大型项目中使用自动内存管理工具。因此,今天的C开发人员应该积极学习和应用自动内存管理设施。
说到自动内存管理,比较轻松的方法是boost:smart_ptr,而激进的方法是引入完整的GC机制。目前,Hans- Boehm GC无疑是最可靠的开源GC。作为一款保守的GC,Hans-Boehm GC在性能和功能上都非常出色。尤其是有了这个GC,仍然可以通过删除和释放来管理内存,对我们的编程习惯影响不大。
九。密码和安全性:OpenSSL
安全性是当今C/C编程中不可避免的重要问题。然而,编写安全的应用程序是非常困难的,尤其是与网络相关的C/C应用程序。可以说整个行业在这个过程中还处于“初级阶段”。特别是,它涉及大量与安全和密码学相关的算法和规范。如果让开发者自己去探索,他们的工作量和难度都是不现实的。因此,只有借助可靠的相关程序库,才有可能提高程序的安全性。在这方面,OpenSSL是目前最好的选择,其全面可靠的内容已经成为业界标杆。然而,由于安全编程固有的复杂性,即使使用penSSL,开发工作仍然非常繁琐。所以我们也希望尽快看到一个更简单易用的C/C安全程序库。
X.矩阵计算:MTL
自1995年以来,C语言在科学计算领域取得了重大突破。这主要得益于模板技术的先进应用,使得C在科学计算的性能上有了长足的进步,涌现出大量优秀的C科学计算库。比如闪电战,POOMA,MTL,Boost:uBLAS。其中,MTL在功能丰富度、性能、开发支持度、成熟度等方面都是佼佼者,可以优先考虑。值得一提的是,2002年,MTL与后来被英特尔收购的KAI C合作,一度在性能评测中击败FORTRAN。
XI。中间件
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.http://irrlicht.sourceforge.net/伊里希特
它始于2003年,次年被评为最佳开源游戏引擎。官方C和。Net,扩展语言绑定包括Java、Perl、Ruby和Python。跨平台支持,使用了D3D、OpenGL和自己的API。
优点:使用方便;跨平台;附带XML解析器;一个大社区;
缺点:最近发展放缓。
2.潘达3d http://www.panda3d.org/
由迪士尼开发,卡内基梅隆娱乐技术中心支持。Python是官方推荐的语言。也支持c。
优点:有用的社区;很多功能;定期开发;
缺点:缺乏工具支持;非常差的文档;
3.食人魔http://www.ogre3d.org/
最好的图像引擎之一。它成立于2000年。推荐c语言。你需要非常熟悉编程。不适合新手。
优点:功能很多;优秀的文档;大型社区;积极发展
缺点:不适合初哥;只有图像引擎
4.http://www.crystalspace3d.org/main/Main_Page水晶空间
1997年发布,是用c写的开源游戏引擎,使用推荐c
优势:良好的社区支持;很多功能;
缺点:难学;
5、delta 3d http://www.delta3d.org/index.php
Delta3D是海军研究生院开发的全功能游戏和仿真引擎,得到了美国军方的巨大支持和丰厚投资。该引擎具有广泛的应用,例如开发用于培训、教育、娱乐和科学计算可视化中的建模和模拟的软件。
其标准化设计集成了OpenScene Graph (OSG)、OpenDynamic Engine (ODE)、角色动画库(CAL3D)、OpenAL等一些知名开源软件和引擎。Delta3D通过对这些底层模块的隐藏、封装和集成,形成了更加方便的高层API函数库,使得开发者可以在必要的时候使用底层函数进行二次开发。Delta3D在软件系列的中间层。
优点:适合各种3D游戏,仿真,非常全面。我一直在更新。
缺点:参考文献少。中文文献也很少。很少有官方参考。但是阅读源代码可以加快理解和应用的速度。
温馨提示:目前正在研究delta开源引擎,用它开发一个小游戏。
顺便打个广告:delta3d交流qq群:12483772。欢迎加入,共同探讨。
本文版权归作者kanego和博客公园所有,欢迎转载。但未经作者同意,必须保留此声明,并在文章页面给出原文链接,否则保留追究法律责任的权利。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。