Dakaren.COM: Stay hungry, stay foolish~ 设为首页 | 加入收藏 |注册管理

达卡人技术博客™
        dakaren技术博客,博广天下–源码算法|图像增强|经验总结|设计方案|学习教程! >>> 本站作为一个技术站点,并不是简单复制转载一些文章而已,所以不可能每天都更新,也没有那么多精力,希望体谅,但我们会努力和大家交流最有用的东西。也欢迎您来稿来信,共同进步。谢谢dajia's支持! 给大家推荐一个不错的CV网站>>计算机视觉论坛:http://cvchina.net

  • 编程开发
  • 图像处理
  • 算法源码
  • C++技术
  • 经验总结
  • 数据库经
现在的位置: 首页 >C++技术>正文
RSS
上一篇 下一篇
cpp category
C++开源库详细介绍
发表于99 天前 ⁄ C++技术 ⁄ 暂无评论 ⁄ 被围观 241 views+

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,你仍然可以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。

十一、中间件

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游戏,仿真,很全面。一直在做更新。

缺点:参考资料比较少。中文文档也比较少。官方参考资料比较少。但是读源代码可以加快理解,应用。

tips:目前,我正在研究delta开源引擎,并利用其开发一个小型游戏。

顺便打个广告:delta3d 交流qq群:12483772。欢迎加入,共同探讨。

本文版权归作者 kanego 和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

Related posts:

  1. Computer Vision Open Source Algorithm Implementations
  2. 两种方法使用VC遍历文件夹下所有文件和文件夹
  3. C++多线程编程
  4. 常用的几种VS编程插件
  5. VS 2008 Feature Pack使用及基本特性介绍
  6. 统计程序运行时间的C++源代码
固定链接: C++开源库详细介绍 | 达卡人技术博客 +复制链接

作者: dakaren

该日志由 dakaren 于2011年11月17日发表在C++技术分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: C++开源库详细介绍 | 达卡人技术博客
关键字: OpenCV, VC, Windows, 源码
【上篇】C++ string 详解
【下篇】程序版本管理:Windows下SVN Server搭建

您可能还会对这些文章感兴趣!

  1. 程序版本管理:Windows下SVN Server搭建
  2. C++ string 详解
  3. 统计程序运行时间的C++源代码
  4. Wiener2滤波C++代码
  5. 排序概述及常用排序算法
  6. c++操作符优先级表【基础知识】
  7. C++类型转换总结
  8. Visual Studio + Visual Assist 常用快捷键
    vc6/vs2003转到vs2005 2008出现的错误解析
    C++ string 详解
    统计程序运行时间的C++源代码
    去除MFC中”Untitled-MyApp”

给我留言

点击这里取消回复。

您必须 [ 登录 ] 才能发表留言!

  • 最新文章
        程序版本管理:Windows下SVN S C++开源库详细介绍 C++ string 详解 统计程序运行时间的C++源代码 利用GPU实时绘制水墨画效果 转载 算法的力量 李开复__转自李开复网 CvChina计算机视觉论坛代找图像视 超酷iPhone增强现实软件:实时翻译 常用的数字图像去噪典型算法及matl Wiener2滤波C++代码
  • 热门文章
        统计程序运行时间的C++源代码 去除MFC中"Untitled-MyApp" 利用GPU实时绘制水墨画效果 转载 两种方法使用VC遍历文件夹下所有 新东方密传的高效背单词方法。这样 粒子滤波简介以及相关技术探讨 VC中利用多线程技术实现线程之间 ADO中_variant_t变量的使用与转 msvcr80d.dll--处未处理的异常: 0x wordpress网站用户个性图像设置技巧
  • 随机文章
        • 视频文件的读取与保存-OpenCV学
        • 编程命名中的7+1个提示
        • 十个免费的Web压力测试工具[转]
        • Visual C++实现二值图像处理3
        • 整合 Google 开源 C++ 代码
        • 神奇的C语言位运算教程
        • 常用的数字图像去噪典型算法及matl
        • Chih-Jen Lin's Home Page
        • SVM学习之三——从机器学习到支
        • 排序概述及常用排序算法

推荐栏目

    jottings category
    情感随笔

    简单记录生活的点点滴滴,很随意,随心而动……

    cpp category
    C++技术

    C/C++技术信息,相关技术,该语言的学习资料及文档,以及学习编程经验分享

博文分类

标签

.NET ARM C cvchina GSL lib Linux OpenCV SVM Unix VC Web Windows 二值化 关键字 卡尔曼滤波 压力测试 名师介绍 噪声 图像变换 图像增强 图像处理 多线程 学习 嵌入式 开源 插值 数据库 数据挖掘 文件 机器学习 椒盐噪声 源码 滤波 界面美化 算法 粒子滤波 经验 调试 远程连接 通信 随感 随笔 面试经验 高斯

 

2012 二月
一 二 三 四 五 六 日
« 十一    
 12345
6789101112
13141516171819
20212223242526
272829  

分类目录

  • C++技术
  • 名人名站
  • 图像处理
  • 情感随笔
  • 技术资讯
  • 数据库经
  • 算法源码
  • 经验总结
  • 编程开发
  • 网络技术

最新评论

  • 又快又好的减肥方法:
    博客不错 加油
  • e路航:
    学习LZ好榜样哟
  • 好买吧:
    如果再给我一次机会我会说我爱
  • 肤美灵洗面奶:
    过来学习下·······
  • 随风飘荡:
    博主的文章很棒,支持! ht
  • 靓邦素:
    文章很不错 值得学习 呵呵
  • lexia 3:
    好文章!值得一看
  • 购物吧:
  • 伊丽莎白雅顿香水:
    很不错的,顶一下下
  • 什么减肥药最有效果:
    很少关注

网站统计

    日志总数:134篇
    评论总数:389条
    分类总数:10个
    标签总数:63个
    友情链接:23个
    网站运行:1152天
最后更新:2011年11月17日
  • 关于我们
  • 作品展示
  • 校园信息
  • 留下足迹

返回首页

Copyright © 2010-2011 达卡人技术博客  保留所有权利.  Theme by Robin   基于 WordPress 技术创建   88次查询   鄂ICP备09014346号 
不想听你唠叨×
  • 我同学说﹕我搁的洗衣粉太多了。另外一个问﹕什么?你哥的媳妇儿太多了? No related posts.
  • 站点搬入新空间,欢迎来访 No related posts.
  • 我有个同学黑了些,她bf又太白了些,有天宿舍里得毒舌天后突然对她冒出一句﹕”你们这样不行,你们会...