c++开源项目汇总

 

、、http://daixinghe.blog.163.com/blog/static/1843615920096653733850/?fromdm&fromSearch&isFromSearchEngine=yes

向C++刚開始学习的人推荐的几个开源库
标签:  STL  boost  SDL  wxWidgets  开源库  推荐  2009-07-04 22:47


前阵子写了《C++ 的“武”和“功”》。谈到C++语言知识,属于“功”,而那些强大的C++库,属于“武”,属于十八般武艺。

这篇文章我首先把《白话C++》书中讲到C++库,及相关工具,简单做个介绍。这些库我是怎么为C++刚開始学习的人挑出来的呢?

(一)、它们必须都是开源产品,又为什么要是开源的呢?


    1.1、十年前的国内C++学习者,能够全然不必理会开源库,但在几年,编程界中的人,假设敢无视开源力量,那真够火星的。从Java的各个流行的库,到Java语言(实现)自身也开源了,再看那些强大的动态语言:PHP、Python,Ruby,开源环境简直就是它们呼吸的空气。今天在Linux界吵得沸沸扬扬的Mono,就是开源.Net。C/C++事实上才是开源的鼻祖。十五年前,会Borland的OWL,是大拿,十年前,会MS的MFC或Borland的VCL,就能够风光地混饭吃。如今呢?你还准备学哪个商业的库?


    1.2、当然也不是全然反对商业的库,但商业上的东西,自然就会有其厂商为它们大力推动。我们能够不去凑这个热闹。
 

    1.3 我在书上数据库的部分,主要讲C++怎样使用MySQL,而不是Oracle或SQLServer。由于作为软件开发人员,出于软件人的利益,我希望正版意识被人接受(不管开源的或商业的),而且我相信正版化是趋势,所以我不希望我的读者为了读我的书,去盗版或花数万甚至十数万去买数据库。也许有些商业软件提供学习版,但功能受限。

(二)、它们必须都是成熟的产品。

    或者背后有类似IBM这种大公司在支持,比方xerces-c,或者在业界中很多成功的案例,像MySQL就是使用量天下第一的数据库。或者它们超长的发展史,已经通过无数应用被证明是稳定的,比方wxWidgets,在MaximumPC杂志近期评出的32个“每台新PC中最重要的应用软件”中,使用wxWidgets构建的,就占了5个。至于iconv所提供的编码转换,那是全部Linux发行版内置的基础组件。最后一点我想也非常重要,全部我在书解说的C/C++库及软件,都在本人近期5年的实际工作中使用过(顺带,我严格尊守了相关的开源协议)。

(三)、它们都是跨平台的产品。

   C++在“商业应用”方面,以前是天下第一的开发语言,但这一桂冠已经被java抢走多年。由于当今商业应用程序类型,已经从桌面应用迅速转移成Web应用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的以前的C++程序猿,(包含我)以为C++要就此沉沦,未料,这三年来,C++的生命力突然被严重地增强了。主力原因就是开源的软件、基础软件(比方并发原生支持,比方Android必然要推出原生的SDK)、各种跨平台应用(比方Firefox)的出现。假设我此时教各位局限于Windows下的C++,我该教什么呢?
 

(四)、它们必须是相对通用的库

   由于要推荐给终于专业及行业尚未确定的刚開始学习的人,库就应该是“基础”型的,比方STL和boost。通用型的,比方用于解析XML的xerces-c或正則表達式,属于工具类,不管在做什么编程,都用得上。或者是乐趣型的,比方SDL。

    多说无用,上菜。


    STL:C++标准模板库,呵呵,它也是开源的嘛。>>

    wxWidgets :使用wxWidgets ,开发人员能够基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库能够被C++, Python, Perl, and C#/.NET等开发语言使用。跟其他有些相同支持跨平台GUI开发工具不同,基于wxWidgets的应用,拥有真实本地化的视觉及使用效果——由于,wxWidgets使用(各)平台原生的控件,而不是简单通过贴图去模拟。wxWidgets是使用广泛的,*的,开源的,成熟的。
   
    mysql / mysql++: 不用介绍吧。如今Oracle手里,但我非常放心。

    boost:C++准标准库,它是强大地,江湖称之“千锤百炼”。

    iconv /iconvpp : (C形式的编码转换函数库,及本书作者用C++语言对iconv的简单封装)


    xerces-c :个人觉得最完整,最强大的XML解析库了,不是只在开源库里,你虽然把商业的算在内。当然,它的变体,被IBM拿去卖钱的那个版本号,多了数百兆的东东来支持各国编码转换,是更强大,但我觉得有小小的,开源的iconv在前不就够了?

    xsd (XML 与 C++数据结构的绑定工具)。(商业使用要钱)

    deelx (轻量级的正則表達式解析类库,国产),boost里有强大的正則表達式解析库,但假设你仅仅想要一个表达式解析,不想要拖上庞大的boost库时……支持一下国货。

    SDL (Simple DirectMedia Layer/多媒体直接訪问层,用于游戏编程)。

    gSOAP SOAP协议的C++支持库及代码生成工具。

 
    看起来,这些库功能都强大的,又是开源的,真是天上掉馅饼了?也不是,代价就是,你必须熟悉开源C++的规则,通常它们就是源码,你必须自己编译它们。为此《白话C++》里,专文一章,用来解说怎样编译、安装各类的库及软件。但对缺少经验,奇怪问题总是会有,非常多读者会有怨言了。C++好复杂啊!開始退缩了,我真的须要学习这么库吗?我光学习C++语言不行吗?坦白地讲,光学习不论什么语言都不行。学一个java能有什么公司要你?假设你不会它的不论什么框架,一个Python语言真的那么强大的?假设剥掉它那来自五湖四海的众多库。

     好吧,非常多人决定坚持下来,但他们问我,我的坚持有没有意义,我即将受的苦,对我有没有优点?这就是说,大家会把这些“库”的学习,不知不觉地,当成了负担!精力上的,及心理上的负担。所以,接下来,我说说我的看法:学习库,是有累的地方,但很多其它的是优点。

    不论什么人学习语言的过程,事实上都不不过“学”,而应该另一个“习”。所谓,“习”,就是并非简单的“练习”,而是“应用”。不是吗?就像学习英语,假设光抱着书大啃,只用来应付考试可能没事,但会学习得非常苦。假设学一点就能找老外说一点,肯定会非常有乐趣,而且进展神速——我说这话可不是凭想像!那是全然有依据了。去年由于大学生交换,我手下交换来一位德国美丽女生,会说英语。我每天带她去吃午饭,又有动力,效果又好啊。:)

    前面那些库,有做界面的,有数据库的,有做游戏的,有XML解析的,有SOAP协议,另一些没举出的,线程,网络……光学C++语言本身,没有这些,我们的乐趣从何而来?我们的成就感从何而来?光是那个黑黑的控制台里的字符界面吗?“Hello world”带给C++刚開始学习的人的乐趣,窃以为能持续一个下午,就不错了。

    可能学编程中的,是有人会走“苦行僧”路线,那种路线详细效果怎样,我不了解,我自己学编程,都会学一点点,就会想写个小工具什么来的,一来在应用中验证和巩固一下刚学的知识,二来还会从中发现自己缺少的知识点,然后带着问题去学习后面的新内容。

    学习肯定是要兴趣的,假设只说,“应用”就是为了培养学习者的“兴趣”,那还是低估了应用的作用。

 http://gzjsgdsb.blog.163.com/blog/static/2401730220097531123865/?fromdm&fromSearch&isFromSearchEngine=yes

C++开源跨平台类库集   

2009-08-05 15:11:23|  分类: c++ |订阅

在例如以下的库支持下,开发的系统能够非常方便移植到当前大部分平台上执行
而无需修改,仅仅需在相应的平台下 用你喜欢的编译器 又一次编译就可以

经典的C++库
   STLport-------SGI STL库的跨平台可移植版本号,在曾经有些编译器离符合
         标准比較远的情况下 那时还是实用的,当然眼下vc71已经比較接近标准了,
         故眼下不怎么用它了。
   Boost---------准标准库, 功能强大 涉及能想的到的大部分非特别领域的算法,
         有一个大的C++社区支持
   WxWindows-----功能强大的跨平台GUI库  ,它的功能和结构都类似 MFC,故原则上
      能够通过WxWindows把现有MFC程序移植到非Win平台下
   Blitz---------高效率的数值计算函数库 ,你能够订制补充你须要的算法
   Log4cpp-------日志处理  ,功能类似java中的log4j
   ACE-----------自适应通讯环境, 重量级的通讯环境库。
   Crypto++ -----加/解密算法库, 很专业的C++ password学函式库
   CppUnit  ---  一个c++的单元測试框架  类似 java  的JUnit
   Loki -------  一个实验性质的库,尝试把类似设计模式这样思想层面的东西通过
        库来提供,他是C++的一个模板库,系C++"贵族", 它把C++模板的功能发挥到了极致

学术性的C++库:
   FC++ --------The Functional C++ Library  ,用库来扩充语言的一个代表作 ,模板库
   CGAL ------- Computational Geometry Algorithms Library计算几何方面的大部分重要的
     解决方式和方法以C++库的形式提供给工业和学术界的用户。


其他眼下我感觉还不是非常爽的C++库: 
   Doxygen  ----凝视文档生成工具 ,可恨的是 我找不到 windows版本号
   QT ----------大名顶顶的一个多平台的C++图形用户界面应用程序框架(GUI库)
          可气的是他的 Windows版 是商业公布的要付费
   xml4c--------IBM开发的XML Parser,系超重量级的, 适用大型应用中, 其DLL有 12M,恐怖吧
   Xerces c++ --Apache的XML项目, 但 仅仅支持少数的字符编码,如ASCII,UTF-8,UTF-16等,
           不能处理包括中文字符的XML文档
   XMLBooster -----  也是一种  XML的 解析工具
   Fox   -------又一种开放源码(C++)的GUI库,功能不是非常强


C++开发环境(Win平台下除了 Visual C++ 和 Borland C++以外的):
   Cygwin  --------Windows下的一个Unix仿真环境
   MinGW   --------GCC的一个Windows移植版本号
   Dev C++ -------- 一个C/C++ 的集成开发环境,在Windows上的C++编译器一直和标准有着一
        段距离的时候,GCC就是一个让Windows下开发人员流口水的编译器。
   Eclipse-CDT  ----IMB 开发的一个集成开发环境,一般用来作为Java 开发环境,但因为
         Eclipse 是通过插件体系来扩展功能,这里我们 安装 CDT插件后,就能够用来作为
         C++ 的集成开发环境

http://gzjsgdsb.blog.163.com/blog/static/2401730220097531123865/?fromdm&fromSearch&isFromSearchEngine=yes

五大开源游戏引擎介绍  

2009-11-03 10:24:58|  分类: 网络编程 |订阅

http://developer.51cto.com/art/200907/138802.htm

对游戏编程初哥来说,选择一个好的游戏引擎是一个非常头疼的事。市面上鱼目混杂,并且价格不菲。今天我要隆重推出开源游戏引擎五强(严格上说是四个,有一个是图像引擎)。他们不仅被证明是可靠的,并且所有开放源代码。

1. Irrlicht http://irrlicht.sourceforge.net/

始于2003,次年即被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包括java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自带API.

长处:easy上手;跨平台;自带XML解析器;大的社区;

缺点:近期开发慢下来了

2. Panda3D http://www.panda3d.org/

由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。

长处:实用的社区;大量功能;定期开发;

缺点:缺乏工具支持;极差的文档;

3. jME (爪哇猴子引擎) http://www.jmonkeyengine.com/

所有由Java实现。最流行的Java游戏引擎之中的一个。

长处:easy上手;活跃的社区;内置物理引擎

缺点:我不太知道,由于没用过

4. OGRE http://www.ogre3d.org/

图像引擎中最好的一个。2000年立的项。推荐使用C++语言。须要很熟悉编程才行。刚開始学习的人不宜。

长处:大量功能;优异的文档;大规模的社区;活跃的开发

缺点:不适合初哥;仅仅有图像引擎

5. Crystal Space http://www.crystalspace3d.org/main/Main_Page

1997年发行,用C++编写的开源游戏引擎。推荐使用C++

长处:不错的社区支持;大量功能;

缺点:难学;

我个人的经验是,C++刚開始学习的人应从Irrlicht着手,这是最easy上手的。我没有Java编程经验,所以不好说什么。可是我觉得jME还是能够踹踹的,非常好的社区支持啊。