C++开源跨平台类库集及开发工具

明亮 posted @ 2010年6月04日 19:28 in 【C/C++】 with tags c++ 类库 , 18328 阅读
本文发表于:http://fml927.is-programmer.com

 

C++开源跨平台类库集及开发工具【转载自:http://blog.csdn.net/liflag888/archive/2006/09/21/1260196.aspx】

=======================================================================================

目录

=======================================================================================

1、经典的C++库

  STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合标准比较远的情况下那时还是有用的,

当然目前vc71已经比较接近标准了,故目前不怎么用它了。

  Boost---------准标准库, 功能强大 涉及能想的到的大部分非特别领域的算法,有一个大的C++社区支持

  WxWindows-----功能强大的跨平台GUI库  ,它的功能和结构都类似 MFC,故原则上可以通过WxWindows把现有MFC

                程序移植到非Win平台下

  Blitz---------高效率的数值计算函数库 ,你可以订制补充你需要的算法

  Log4cpp-------日志处理  ,功能类似java中的log4j

  ACE-----------自适应通讯环境, 重量级的通讯环境库。

  Crypto++ -----加/解密算法库, 非常专业的C++ 密码学函式库

  CppUnit  ---  一个c++的单元测试框架  类似 java  的JUnit 

  Loki -------  一个实验性质的库,尝试把类似设计模式这样思想层面的东西通过库来提供,他是C++的一个模板

库,系C++"贵族", 它把C++模板的功能发挥到了极致

 

2、学术性的C++库: 

  FC++ --------The Functional C++ Library  ,用库来扩充语言的一个代表作 ,模板库

  CGAL ------- Computational Geometry Algorithms Library计算几何方面的大部分重要的解决方案和方法以C++

库的形式提供给工业和学术界的用户。

 

3、其它的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库,功能不是很强

 

4、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++ 的集成开发环境

 

5、游戏开发类库

 

=======================================================================================

1、经典的C++库

=======================================================================================

以下以 vc71环境 为例,其他环境 见各软件包的说明文档。

 

1.1  STLport (SGI STL库的跨平台可移植版本)  

-------http://www.stlport.org

 

vc71环境中编译安装

版本:STLport-4.6.2.tar.gz

copy vc71.mak makefile

nmake clean all

 

头文件在 %STLport_root%/include\stlport

库文件在 %STLport_root%/lib

 

头文件添加方法如:

#i nclude  需要链接lib库

 

1.2  WxWindows  (跨平台的GUI库)

    --------http://www.wxwindows.org

    --------http://sourceforge.net/projects/wxwindows

    --------http://i18n.linux.net.cn/others/wxWindowstut/wxTutorial.html

 

    因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的功能。通过多年的开发也

是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代码的。新近的C++ Builder X的GUI设计

器就是基于这个库的。

 

vc71环境中编译安装

版本:wxMSW-2.6.0-Setup.exe

copy makefile.vc makefile

通过 配置 config.vc 的 SHARED = 0 和 BUILD = debug

确定 nmake clean all 的四种编译结果:

 

include头文件: include\wx

Lib库文件:  lib\vc_dll  和 lib\vc_lib

DLL: lib\vc_dll 

 

头文件在 %wxWidgets_root%/include\wx

库文件在 %wxWidgets_root%/lib\vc_dll  和 %wxWidgets_root%/lib\vc_lib

 

头文件添加方法如:

#i nclude  需要链接lib库

 

1.3  boost  (“准”标准库)

  ------http://www.boost.org/

  ------http://sourceforge.net/projects/boost/

 

    Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之

一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来

了最新、最酷、最实用的技术,是不折不扣的“准”标准库。

 

vc71环境中编译安装

版本:boost_1_32_0.exe

 

首先进入 tools\build\jam_src 运行 build.bat  得到一个工具: bjam.exe

将其复制到 boost_root 目录下

执行 bjam "-sTOOLS=vc-7_1" stage 开始编译  (bjam "-sTOOLS=vc-7_1" install)

 

头文件在 %boost_root%/boost

库文件在 %boost_root%/stage\lib 

 

头文件添加方法如:

#i nclude  有时要链接lib库

 

Boost中比较有名气的有这么几个库:

Regex    正则表达式库

Spirit LL parser framework,用C++代码直接表达EBNF

Graph    图组件和算法

Lambda   在调用的地方定义短小匿名的函数对象,很实用的functional功能

concept check 检查泛型编程中的concept

Mpl      用模板实现的元编程框架

Thread   可移植的C++多线程库

Python   把C++类和函数映射到Python之中

Pool     内存池管理

smart_ptr 5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:【Smart Pointers in Boost】,

         哦,这篇文章可以查到,CUJ是提供在线浏览的。

    Boost总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调,对标准C++的强调,是编写平台

         无关,现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,在实际的开发中实

 用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精巧的手法,不要贸然

 的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,结构良好,非常值得研

 读的精品代码,并且也可以放心的在产品代码中多多利用。

 

1.4  blitz  (高效率的数值计算函数库) 

  ------http://folk.uio.no/patricg/blitz/html/index.html

  ------http://www.oonumerics.org/blitz/

  ------http://sourceforge.net/projects/blitz/

 

Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran

速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。

方法是利用C++的template技术,程序执行甚至可以比Fortran更快。Blitz++目前仍在发展中,对于常见的SVD,FFTs,

QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用Blitz++所提供的函数来构建。

 

vc71环境中编译安装

 版本:blitz-0.8.tar.gz

 

将 blitz-0.8/Blitz-VS.NET.zip 解压到当前目录下

打开 Blitz-Library.sln  编译即可

 

头文件在 %blitz_root%/blitz

%blitz_root%/random

库文件在 %blitz_root%/lib    (静态库)

 

头文件添加方法如:

#i nclude  有时要链接lib库

#i nclude  不需要lib库

 

1.5  log4cpp  (日志处理)

    -------http://sourceforge.net/projects/log4cpp/

    -------http://log4cpp.hora-obscura.de/index.php/Main_Page

 

Log4cpp 是 Log4J 的 C++ 移植版本,开放源代码并且完全免费。与 Log4J 能够跨平台一样,Log4cpp 也致力

于写出跨平台的 C++ 程序。Log4cpp 主要是用于 C++ 程序中写 log 文件,与此同时,Log4cpp 中有很多有用的类

库,对于写跨平台 C++ 程序的人来说,可以直接拿来用,或者作为自己写跨平台类的参考。

Log4cpp 中的跨平台类库有明显的 Java 痕迹,比如 Class、Object 、Loader、Locale 等类。 Log4cpp中的

类都可以根据类名 new 出一个 instance,其实现的方式和 MFC 如出一辙:通过 C++ 强大的宏来实现。

Log4cpp 中的跨平台类库主要有:

        信号类:Condition(broadcast,signal,wait),CriticalSection (lock,unlock),WaitAccess,

       Event(set,reset,wait),Mutex(lock,unlock), Semaphore(wait,tryWait,post)

        网络类:InetAddress,Socket,ServerSocket,DatagramSocket,SocketInputStream,SocketOutputStream

        日期类:DateFormat,DateTimeDateFormat,System(currentTimeMillis)

        文件类:FileWatchdog(doOnChange)

        内存操作类:基于引用计数机制的智能指针 ObjectPtrT

        字符串操作类:StrictMath,StringHelper(toUpperCase,toLowerCase,trim,equalsIgnoreCase,

       endsWith,format),StringTokenizer

        线程类:Thread(start,run,join)

      

使用以上的类不用考虑 thread handle, event handle, socket handle 之类的 handle 问题,所有这些文件

已经被封装了。很好用,对不对?

不足之处在于没有 GUI 类。ANSI C++ 中对于目录等文件系统的处理功能较弱,这里面也没有目录处理类。另

外 Socket 的 read(void * buf, size_t len) 不能设置 timeout,并且如果读取数据个数小于 len 那么 read 函

数将一直堵塞,不太好用,很可惜。实际的使用上面,可以考虑做一个 Socket 子类,重写 read() 函数。

 

vc71环境中编译安装

版本:log4cpp-0.3.5rc1.tar.gz

打开 msvc6  编译即可

 

头文件在 %log4cpp_root%/include\log4cpp

库文件在 %log4cpp_root%/lib

 

头文件添加方法如:

#i nclude  需要链接lib库

 

1.6  Crypto++  加/解密算法库

  ---http://sourceforge.net/projects/cryptopp/

  ---http://www.eskimo.com/~weidai/cryptlib.html

  ---http://www.cryptopp.com

 

提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。Crypto++ 是一个非常专业的C++ 密码学

函式库,几乎在密码学里头常见的演算法都可以在Crypto++ 找到实作的函式,如:block 与stream  ciphers,

hash functions,MACs,random number generators,public key 加密...等方法.

 

vc71环境中编译安装

版本:cryptopp521.zip

 

直接通过 cryptest.dsw 相关的库

 

头文件在 %cryptopp_root%

库文件在 %cryptopp_root%/lib

 

头文件添加方法如:

#i nclude <*.h>  需要链接lib库

 

1.7  ACE

    ------http://www.cs.wustl.edu/~schmidt/ACE.html

    C+ +库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)

是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。ACE提供了一

组丰富的可复用C++ 包装外观(Wrapper Facade)和框架组件,可跨越多种平台完成通用的通信软件任务,其

中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、

分布式服务动态(重)配置、并发执行和同步,等等。

 

1.8 CppUnit

    -------http://sourceforge.net/projects/cppuint/

  一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,从JUnit移植

而来,JUnit是Java语言的单元测试框架。

 

vc71环境中编译安装

版本:cppunit-1.10.2.tar.gz

直接通过 CppUnitLibraries.dsw  编译相关的库

 

头文件在 %cppunit_root%/cppunit

库文件在 %cppunit_root%/lib

 

头文件添加方法如:

#i nclude  需要链接lib库

 

1.9    Loki

      -----http://moderncppdesign.com

      -----http://sourceforge.net/projects/loki-lib/

      -----http://sourceforge.net/projects/loki-exp/

 

其实可和Boost一起介绍它,一个实验性质的库。作者在loki中把C++模板的功能发挥到了极致。并且尝试把类

似设计模式这样思想层面的东西通过库来提供。同时还提供了智能指针这样比较实用的功能。

该库系模板库,库本身无需编译,在你的工程文件中 引用头文件就可以使用,如果 你直接或间接使用了

small object,那你需要在你的工程文件 加上 SmallObj.cpp如果 你直接或间接使用了Singletons,那你需要

在你的工程文件 加上 Singleton.cpp

 

=======================================================================================

学术性的C++库

=======================================================================================

2.1    FC++: The Functional C++ Library

    --------http://www.cc.gatech.edu/~yannis/fc++/

 

这个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外寻找另一

分的乐趣,可以去看看函数式程序设计的世界。大师Peter Norvig在 “Teach Yourself Programming in Ten 

Years”一文中就将函数式语言列为至少应当学习的6类编程语言之一。

当前版本:FC++.1.5.zip

模板库,在实际工程中 ,加上要用的头文件 就可以编译。

 

2.2    CGAL

      -----http://www.cgal.org

 

    Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和方法以

C++库的形式提供给工业和学术界的用户。

 

当前版本:CGAL-3.1.zip

这是一个已编译的版本,当然也包括完整的源码

 

头文件在 %CGAL_root%/include/CGAL

库文件在 %CGAL_root%/lib/msvc7

 

头文件添加方法如:

#i nclude  需要链接lib库

=======================================================================================

其它的C++库

=======================================================================================

3.1  Doxygen

    ------http://sourceforge.net/projects/doxygen/

    ------http://www.stack.nl/~dimitri/doxygen/

 

  注释文档生成工具,较之Doc++功能更为齐全,可以生成包括HTML、PDF、RTF在内的多种格式的文档,

并有GUI界面,除了支持c/c++语言外,还支持IDL、java、PHP、c#等。

 

 

3.2  QT(windows版要付钱) 

    -------http://www.trolltech.com/

    -------http://www.qiliang.net/qt.html

 

    Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图

形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从1996年早些时

候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 

的基础,同时它还支持Windows、Macintosh、Unix/X11等多种平台。

 

3.3 Fox

    ---------http://www.fox-toolkit.org/

    开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受出发,从而

开始了对这个库的开发。有兴趣的可以尝试一下。

 

3.4  xml4c

    ------http://www.alphaworks.ibm.com/tech/xml4c

 

  IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,适合于大规

模的xml应用。若只是很小范围的应用,则非最佳选择,毕竟,你需要“背负”约12M左右的dll的沉重负担

 

3.5    Xerces c++

    -------http://xml.apache.org/xerces-c

 

  Apache的XML项目,同样是c++ 实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是目前只支持

少数的字符编码,如ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。  Xerces-C++ 是一个非常健壮

的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定义(Document Type Definition,DTD)方面

有很好的支持,并且在2001年12月增加了支持W3C XML Schema 的基本完整的开放标准。

 

3.6  XMLBooster

    -------http://www.xmlbooster.com/

 

    这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序来修改这个

parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。

 

=======================================================================================

C++开发环境(Win平台下除了 Visual C++ 和 Borland C++以外的)

=======================================================================================

 

4.1 Cygwin  (Windows下的一个Unix仿真环境)

    这个Cygwin的一部分是GCC的另外一个Windows移植版本,Cygwin是Windows下的一个Unix仿真环境。严格的说

是模拟GNU的环境,这也就是"Gnu's Not Unix"要表达的意思。

    至Cygwin的網站http://www.cygwin.com/下載安裝程式setup.exe,可直接點選執行或先行下載至個人電腦後

再執行。

    目前我已经下载到本地了,直接安装即可。

 

4.2 MinGW  (GCC的一个Windows移植版本)

  1)http://sourceforge.net/projects/mingw 直接访问的,点击 Files,然后下载以下文件:MinGW-3.1.0-1.exe,

  mingw32-make-3.80.0-3.exe。安装MinGW 到 C:/MinGW 目录下,然后安装 mingw32-make 到 C:/MinGW 下,通过

  浏览器到 C:/MinGW/bin 下,将 mingw32-make.exe 改名或者另外复制为 make.exe。(以上的设置已经足够。不

  过为了求新,我是同时下载了 gcc-core-3.4.2-20040916-1.tar.gz,mingw-runtime-3.5.tar.gz 和 w32api-3.1.tar.gz,

  将它们直接解压到 C:/MinGW 下更新旧的文件。不过这对这篇文章本身没有任何影响。新旧两种配置我都测试过。)

 

  安装次序: 

    MinGW-3.1.0-1.exe

    mingw32-make-3.80.0-3.exe

    gcc-core-3.4.2-20040916-1.tar.gz

    mingw-runtime-3.5.tar.gz

    w32api-3.1.tar.gz

    gdb-5.2.1-1.exe

    mingw-utils-0.3.tar.gz

    binutils-2.15.91-20040904-1.tar.gz

 

  2)准备MinGW 用户开发的命令行环境(一个批处理)

如: mingw.bat

@rem --------------------------------------

@SET MINGW_ROOT=D:\Mingw

 

@rem

@echo Setting environment for using Mingw.

@rem

 

@set PATH=%MINGW_ROOT%\BIN;%PATH%

@set INCLUDE=%MINGW_ROOT%\INCLUDE;%MINGW_ROOT%\INCLUDE\c++\3.2.3;%MINGW_ROOT%\include\c++\3.2.3\

mingw32;%MINGW_ROOT%\include\c++\3.2.3\backward;%INCLUDE%

@set LIB=MINGW_ROOT\LIB;%LIB%

@rem ----------------------------------------

 

4.3 Dev C++  (一个C/C++ 的集成开发环境)

    GCC是一个很好的编译器。在Windows上的C++编译器一直和标准有着一段距离的时候,GCC就是一个让Windows下

开发者流口水的编译器。Dev-C++就是能够让GCC跑在Windows下的工具,作为集成开发环境,还提供了同专业IDE相

媲美的语法高亮,代码提示,调试等功能。由于使用Delphi开发,占用内存少,速度很快,比较适合轻量级的学习

和使用。  可以使用  MinGW-GCC 作为它的编译器 

 

4.4 Eclipse-CDT

 

=======================================================================================

5、游戏开发

=======================================================================================

Audio/Video 3D C++ Programming Library

------http://www.galacticasoftware.com/products/av/

------http://sourceforge.net/projects/av3d/

***3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及S3M),控制接口(键盘,

鼠标和遥感),XMS。

KlayGE

   ------http://home.g365.net/enginedev/

   ------http://sourceforge.net/projects/klayge/

   国内游戏开发高手自己用C++开发的一个开放源代码、跨平台的游戏引擎。KlayGE是一个开放源代码、跨平台的

   游戏引擎,并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的

   贡献。

OGRE

   ------http://www.ogre3d.org

   ------http://www.ogre3d.org/docs/manual/

   ------http://sourceforge.net/projects/ogre

   OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的目的是让开发者能更方便

和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的

全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

  • 无匹配
Avatar_small
纵横天下 说:
2010年7月17日 02:16

编译wxWidgets,太大太大太大了,故放弃。更喜欢纯C的GTK+,但是很麻烦,想用gtkmm资料太少,唉。

National University 说:
2022年8月26日 13:19

National University's Single Sign-On initiative, please visit nu.edu/sso. For Students: Single Sign-On Online Classes It doesn’t just consume your energy and time but your resources too. National University student portal Studying with the busy schedule requires an institute with part-time classes or online programs to handle the fixed schedule.National University's Single Sign-On initiative, please visit nu.edu/sso. For Students: Single Sign-On Online Classes It doesn’t just consume your energy and time but your resources too.

seo service london 说:
2023年11月01日 18:49

Hello, I have browsed most of your posts. This post is probably where I got the most useful information for my research. Thanks for posting, maybe we can see more on this. Are you aware of any other websites on this subjec

pavzi.com 说:
2024年1月22日 15:29

Pavzi.com provides all the news about Gadgets, the Economy, Technology, Business, Finance and many more. The main concept or our aim behind this website has been the will to provide resources with full information on each topic which can be accessed through the Internet. To ensure that every reader gets what is important and worthy about the topic they search and link to hear from us. pavzi.com Our site is a multiple Niche or category website which will ensure to provide information and resources on each and every topic. Some of the evergreen topics you will see on our website are Career, Job Recruitment, Educational, Technology, Reviews and others. We are targeting mostly so it is true that Tech, Finance, and Product Reviews. The only reason we have started this website is to make this site the need for your daily search use.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter