给c++程序员的一份礼物——常用工具集
所谓“工欲善其事,必先利其器”,从程序员的角度来讲,好工具的使用总会给人带来事半功倍的效果。面对众多工具/软件,我们应该如何取舍呢。前不久,笔者在csdn的c++论坛发了一篇贴文,以期能征求大家的广泛意见,得到了不错的反响。本文在对该贴进行整理的基础上,又做了一些补充。在这里要特别感谢网友:DanielWYO(爱上小白),redleaves(无心红叶)。

有以下几点需要声明:

  1. 本文主要是针对c++程序员的,但一些综合类的通用型工具/软件,作为c++程序员而言也是不可或缺的,因此也被列入其中。同样,这些工具/软件,对其他语言的程序员,也是适用的。     
  2. 对所列各类工具/软件的评价,其依据是多数网友的观点汇总,并结合了笔者自己的个人观点,供参考,如有不实之处,欢迎指正。     
  3. 对所列各类工具/软件的排名不分先后,其中既有Open source软件,也有商业产品。对于前者,我将提供下载地址,对于后者,我将尽量提供相关信息的参考网址。     
  4. 这份清单并非static的,所列工具/软件也远非保罗万象,如果你有好的建议和想法,也可以提供。如有必要,我会对该清单作定期更新^_^

开发环境

Turbo c DOS时代c语言开发的经典工具,目前适合两类人使用:c语言beginner(尤其是学生一族),具有怀旧情节的专业人士:)
Visual C++ 6.0/7.0 稳定而强大的IDE开发环境,具有丰富的调试功能,定制宏的功能也是其一大特色。Microsoft的经典之作,功能强大自不必言说。附带的一些工具也很不错,比如:Spy++。但编译器较之同类,支持c++标准的程度不够好,尤其6.0及以前的版本。
BCB Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE,速度和稳定性稍逊,但对c++标准支持的程度较好。
Cygwin Windows平台下的C++编译器,基于gcc,又完全兼容Window特有的东西,比如对winsock的支持。从http://www.cygwin.com可以找到有关Cygwin的详细信息。
Dev-c++ Windows平台下,一个类似VC、BCB的c++ IDE开发环境,属于共享软件。界面亲切优雅,size也不大,其4.9.x版有中文语言支持,无需汉化。编译器基于gcc,完全支持STL。但是对于规模较大的软件项目,恐怕难以胜任。可以从:http://www.bloodshed.net/dev/devcpp.html找到有关Dev-c++的有关信息。
Source Insight 有着和Dev c++一样漂亮的界面,提供代码的编辑和察看功能,具有丰富的语法加亮功能,可以像VC一样自动弹出成员函数的提示,并具有快速方便的函数跳转功能(但是跳转速度似乎有点慢)。只是默认设置不适合时,需要仔细的调整和修改。无法查找经typedef之后的名字。

辅助

Visual Assist VC IDE环境下的辅助编程工具,能识别各种关键字、函数、成员变量,自动给出tip,并自动更正大小写错误,标示拼写错误等。是VC开发的良好伴侣。
Understand for C++ 一款c/c++IDE编程的辅助工具,支持反向工程,代码导向和一些统计功能,从http://www.scitools.com可以找到有关Understand for C++的详细信息。

程序编辑器

EditPlus 一款很不错的文本编辑软件,功能强大却又十分轻巧。支持不同语言的语法加亮,还有Project组织功能,具有丰富的自定义功能。通过设置User Tool,可以和其他语言编译器结合,形成一个简单的IDE。
Ultra Edit 功能和EditPlus相当,通过脚本文件提供的配置功能可以定制编辑环境,但自6.0版以后一直没多大变化,就编程而言,自定义设置没有EditPlus方便。
EMACS 公认的世界上功能最多,最复杂的文本编辑器,其实也可以当作程序员用的编辑器。
Visual Slick Edit 一个功能强大的程序员用编辑器。最值得一提的是其定制功能,很好用,可以和EMACS相比。自带了一套PCODE解释器,用c的语法,还可以挂接动态库。配合mingw一起使用很方便。从http://www.slickedit.com可以找到有关SlickEdit的详细信息。
IQEdit 全功能的程序员用编辑器,界面很漂亮,从http://pwksoftware.com可以找到有关IQEdit的详细信息。

UML/建模

Rational Rose 强大的建模工具,早已“家喻户晓”,功过自然不必多加评说了。从http://www.rationalsoftware.com.cn可以找到有关Rational Rose的详细信息。
Visual Modeler MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品,是Rose的简化版。
Visio Microsoft的建模工具,感觉更人性化一些,但功能没有Rose多、强、专,支持正向的代码生成,以及对代码的反向工程。
Together 另一款功能强大的建模工具,用java编写而成,口碑不错,不过速度稍稍慢了一些。从http://www.togethersoft.com可以找到有关Togather的详细信息,另外,以下网址提供了一个有关Together的教程:
http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6
Visual UML 支持多种语言类型,比如:VC、VB、DELPHI、CORBA IDL等,可以直接从UML设计图生成代码,简单易用,完全适合Personal use,界面也很清爽。从http://www.visualObject.com可以找到有关Visual UML的详细信息。
SmartDraw 通用图表制作软件,可以用来制作组织机构图、流程图、统计图表等。随带有图库,基本满足制作各类图表的需要。从http://www.smartdraw.com可以找到有关SmartDraw的详细信息。
PlayCase 国产面向对象的建模软件,兼容UML和IDEF,轻量级软件,只是界面看起来有点简朴,乃是高展先生用Delphi完成的。

版本控制

ClearCase Rational的版本控制管理软件,功能强大,可以控制多种类型的文档,甚至包括Word、Excel、PowerPoint文档。但使用复杂,不易上手,且不是免费软件。
CVS 为基于Web的分布式协同开发提供了版本控制管理手段,且是免费软件,可以通过脚本定制功能。但在权限控制方面功能相对较弱。
VSS 微软的版本控制管理工具,功能相对简单,适合于小型团队开发,将其整合到微软的其他开发工具中,使用起来十分方便。
SourceOffSite 微软为开发人员提供的远程访问VSS数据库的工具,使数据库得以远程更新,以支持远程办公。

其他的版本管理工具还包括:PVCS、VCS、RCS等。

XML

expat 用于读取和处理XML文档的c函数库,最初是James Clark的个人作品,简单轻巧,且速度快。但支持的编码方式有限,最遗憾的是不支持中文。从http://expat.sourceforge.net可以找到有关expat的详细信息。
xml4c IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,适合于大规模的xml应用。若只是很小范围的应用,则非最佳选择,毕竟,你需要“背负”约12M左右的dll的沉重负担。从http://www.alphaworks.ibm.com/tech/xml4c可以找到有关xml4c的详细信息。
Xerces c++ Apache的XML项目,同样是c++实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是目前只支持少数的字符编码,如ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。从http://xml.apache.org/xerces-c可以找到有关Xerces c++的详细信息。

测试

CppUnit 一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,从JUnit移植而来,JUnit是Java语言的单元测试框架。从http://cppuint.sourceforge.net可以找到有关CppUint的详细信息。
Rational ROBOT Rational的自动化测试工具,通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能,有助于对GUI软件进行功能测试;其VU方式的脚本录制功能,有助于测试某些软件的数据通讯功能。
Rational Purify 同样是Rational的自动化测试工具,不需要被测程序的源代码,可以用来检查内存访问错误、Windows API调用错误等,以完成软件的可靠性测试,属于白盒测试。

其他的Rational测试工具还包括:TestFactory、PureCoverage、TestManager等。

日志

log4cpp 一个用于日志记录的c++函数库,可以将内容以定制的方式记录到不同的目的地,比如:文件、控制台、syslog等,同时还可以通过控制记录级别来屏蔽掉某些无关记录。从http://log4cpp.sourceforge.net可以找到有关log4cpp的详细信息。

注释

Doc++ 注释文档生成工具,根据源程序中的文档注释,可以输出TeX和HTML格式的文档。除了支持c/c++语言外,还支持IDL和java。仅提供命令行使用方式。从http://docpp.sourceforge.net可以找到有关Doc++的详细信息。
Doxygen 注释文档生成工具,较之Doc++功能更为齐全,可以生成包括HTML、PDF、RTF在内的多种格式的文档,并有GUI界面,除了支持c/c++语言外,还支持IDL、java、PHP、c#等。从http://www.stack.nl/~dimitri/doxygen可以找到有关Doxygen的详细信息。


阅读全文(1) | 回复(0) | 引用(0)
 


[软件]Dev-Cpp/Mingw32 环境介绍
isecret 发表于 2005-5-4 14:23:18

前言

  对于现在越来越多得关于编程方面得问题和商业公司对版权问题的担心。所以向各位推荐一款类似于VC的IDE。这款IDE所使用的编译程序是 GCC的Win32版本 Mingw32。而IDE本身也是GPL协议的产物。所以,不论是商业用户,还是个人用户都能够自由的使用她,而不必为使用盗版软件而提心吊胆的。另外,由于Mingw32是GCC的Win32版本。所以,也为Win32的程序员可以了解一下Unix和类Unix下的编程感觉。而且,Mingw32对 Win32函数的支持也是很不错的。希望,我们的Mingw32之旅可以带给你快乐。

介绍

  有关Dev-Cpp的介绍,我在这里不想多做解释。因为下面会具体的介绍和讲解的。我在这里只是想要介绍一下有关GCC的内容。因为,Dev-Cpp所使用的Mingw32是一款GCC编译器。所以,对GCC的了解有助于使用Dev-Cpp。

gcc.exe
  这是一个C语言的编译器,负责编译C语言。这个也许大家都知道。不过,在这里我要先向大家说明一下。gcc只是一个C语言的编译器。不能识别C++代码。所以,以前所说的gcc可以编写C++是一个误传。因为,我们通常所说的GCC不是gcc.exe而是GCC的一套程序。其中就包括可以编译C++语言的 g++.exe

如果,你不确定这个gcc的版本,可以用如下的命令查看。

gcc -v

关于编译,gcc可以通过命令符编译。

gcc source.c -o binary

以上的命令,是让gcc直接由.c代码编译成可执行代码。
也可以这样。

gcc -c source.c -o code.o
gcc code.o -o binary

这样就生成了一组二进制代码,然后在通过二进制代码生成可执行程序。

g++.exe
  刚才已经说过了,这个是一个用于编译C++代码的程序。基本用法和gcc一样。所以这里不再介绍了。只是让各位了解一下,这个程序是编译C++代码的。

gdb.exe
  用于调试程序的。功能非常强大。可以调试C,C++等语言。据说还可以调试Java程序。不过我没有试过。对于gcc/g++编译出来的程序。需要再编译时加上 -g 参数。gdb才能进行调试。有点像VC的debug。

make.exe
  这是一个非常有用的程序,可以用来发布程序和编译复杂关系的代码组。其实有点像提示符版的安装程序。不同的是,安装程序是一段二进制执行代码,而它是一个文本文档。
  make所执行的是makefile文件。文件是一个文本文档,里面包含了程序的编译规则。如果要用提示符调用的话可以用如下方法。

make -f makefile

然后,make会根据makefile所提供的编译关系进行编译和安装。下面是一段makefile的内容。请注意,其开头的空白是 tab。

release : main.o
 gcc main.o -o main
main.o : main.c
 gcc -c main.c -o main.o

然后,通过命令 make -f makefile release 就可以执行了。
make会根据文件的创造日期来判断是否要对main.o进行重新编译。也就是说,make可以知道作者修改了哪些文件,并将修改过的文件重新编译。再连接成程序。这样有助于开发者节省开发周期上的时间和精力。

好了,希望上面的介绍能让各位满意。在此,我只介绍一些主要的程序,不一一介绍其他的了。接下来我们介绍一下gcc生成的文件。

*.o 其实就是VC生成的*.obj
lib*.a 就是VC中用的*.lib静态链接库。只是,每个库必须用lib开头。在调用的时候,只要提供*的内容就可以了。
*.so 虽然在Win32中很少用,几乎不用但,还是介绍一下。这个就是Win32中的*.dll动态连接库。但是,在Ming32中已经支持dll了。

好了,关于gcc的介绍就到这里。下面我们开始进入正题。


第一章 安装Dev-Cpp


  在这里,我不介绍Mingw32如何安装。因为Dev-Cpp中已经包含了Mingw32。如果您想了解Mingw32如何安装,可以查看其他相关的资料。这里不作阐述。
  首先,我们必须下载一个Dev-CPP的安装程序。Dev-Cpp的官方网站是http://www.bloodshed.net。Dev-Cpp的网页是http://www.bloodshed.net/dev/devcpp.html最新版本应该是Dev-Cpp 4.9.9.0它的下载地址是 http://umn.dl.sourceforge.net/sourceforge/dev-cpp/devcpp4990setup.exe 。这个下载的文件中包含了全部的内容。在得到安装程序以后,我们就来安装了。
  不论如何,我想,安装这种小问题,我想不用再一步步介绍了吧。毕竟我们都是程序员,如果,连安装都不会那真是……。不过,如果在安装中有什么问题,可以提出。我会尽力帮你解决的。
  双击安装程序后,就按照平常安装的方式安装,建议按照默认安装。当然安装的路径就算便你了。在第一次安装以后,程序会提示你界面的设置。如果你喜欢英文就选择English。如果喜欢中文的,就选择Chinese。注意不要选择Chinese(TW)除非你安装了繁体中文。并喜欢繁体中文。然后是图标设置。推荐你使用New Look。如果你喜欢其他的也可以。还有就是是否使用XP风格。这些都随便你了。
  好了就介绍到这里,到此。我已经介绍了Dev-Cpp的安装,如果顺利。你们运行以后,就会看到如下的界面。

  接下来介绍一下,有关Dev-Cpp在windows中的设置。由于GCC有很多的东西是要在提示符下进行操作的,特别是为Dev-Cpp安装,编译一些工具包。所以,我们就Mingw32添加到系统命令中,有助于以后方便调用。
  方法很简单,右键单击 我的电脑。然后选色属性。使用 高级 选项卡。点击环境变量按钮。点击 Path 项,点击编辑按钮。然后将DevCpp安装目录中的bin目录的路径添加到这个选项值的后面。注意,使用 ; 分隔。确定后启动命令提示符。输入 gcc -v 看。一切都好了。现在你就可以像在Linux环境下一样在Win32环境下编译程序了。

至此,您的Dev-Cpp环境就算弄好了。下面我们将介绍如何制作程序。

第二章 新建项目与编译

  本章我们要进行实战训练了。介绍一下如何在Dev-Cpp下进行项目新建和编译。我相信你一定会慢慢喜欢上这个编译环境的。
  点击文件菜单,选择新建,点击工程。在出现的对话框中选择你所需要的程序种类。如下图所示。

   其中,Windows application是Win32图形界面。Console Application是Win32控制台程序。Static Library是Win32的静态连接库。DLL是Win32的动态连库。Empty Project是更具已有的项目类型创造一个新的项目类型。下面的内容是选择使用的语言,如是C语言还是C++语言。还有就是项目名称。这个名称将作为程序编译后的可执行程序的名称。
  在这里为了方便叙述,我们就新建一个Console Application项目好了。至于使用的语言,就随便你了。我这里就用C语言为例了。点击确定后,提示项目保存的路径,建议您选择其他路径不要使用默认的路径,因为默认的路径是安装目录。如果放在那里的话,会很混乱的。在其他目录中,新建一个文件夹(当然不新建也可以,只是这样便于管理)将项目保存在那里。然后,在点击保存按钮(这个按钮就是一张磁盘,和Windows里的一样)或者从文件菜单中选择保存或者Ctrl + S。这些都可以。这样,Dev就会提示你项目中默认文件的保存目录。通常名为main.*。选择一个路径,保存就好了。(建议和项目文件保存在一起)

  下面我们就来编译程序了。点击工具栏,第二行,第一个彩色的按钮。就进行编译了。这时会出现一个编译窗口,显示编译的进度。你可以通过环境选项来设置它。在编译完成后,点击第二个白色的按钮,就可以运行程序了。是不是很方便?我也是那么觉得。

  接下来,我就来介绍一下,有关项目目录内的文件的作用。

main.c 程序的C语言源代码。
main.o main.c的二进制代码。
Makefile.win 就像我上面所说的,这个是项目的Makefile文件。用make命令可以编译程序的。
*.dev *的内容视你项目的名称所定。这个是项目文件,用于记录你对项目的设置。有关文件内个字段的作用就不做介绍了。
*.exe 你所生成的可执行程序。

最后,我介绍一下如何不用IDE来编译生成程序。
首先进入您项目所在的目录。然后用如下命令。

make -f makefile.win all

就可以编译了。当然,也可以直接通过编译源代码来实现。具体的方法,我已经在开头介绍过了。这里就不再重复介绍了。


文外音:
  文章就暂时介绍到这里,以后还会继续介绍。有关Dev-Cpp/Mingw32更多的内容以后会一一为各位展示。敬请期待。
另外,还希望各位多多指教。我的格言:不论是程序还是思想,唯有通过不断的交流才能愈加完善。


Dev-Cpp/Mingw32 环境介绍(2)

上文回顾:


  上文(《Dev-Cpp/Mingw32 环境介绍(1)》)我们知道了该如何安装和使用Dev-Cpp。并且,知道了一些有关Mingw32的一些用法和一些有关程序的介绍和使用方法。学会了一些基本操作的方法。如新建项目,编译项目等。这一次,我们将继续上一次的内容。

第三章 为你的Dev-Cpp安装开发包


  对于许多程序员来说,让一套喜欢的开发包和一个自己喜欢的IDE结合在一起是最高兴不过的了。自然我也是。上一次我们了解了在Dev-Cpp中如何新建项目。但是,美中不足的是,她似乎只能新建一些简单的程序。比如控制台程序,动态连接库,静态连接库等。似乎要完成一项复杂的工作有些困难。当然,C/C++语言是一门鼓励代码重用的开发语言,我们可以对每个新建的项目进行设置,从而使用自己喜欢并习惯的开发包。但是,这或许太过于繁琐了。而且,安装,编译这些开发包的文件也太过于麻烦了。所以,Dev-Cpp也就为各位开发者提供了 包 的概念。
  在Dev-Cpp中有一个包管理系统。使用这个系统,你可以方便的安装各种开发包。有了这个,你的Dev就会越来越顺手。那就像《人月》中的一篇文章的标题《Sharp Tool》(锐利的工具)那样了。下面我们就来一步步学习如何安装开发包。
  首先,我们必须有一个已经做好了的开发包。我们可以从Dev-Cpp的官方网站获得。这里是开发包的下载页面的地址 www.bloodshed.net/dev/packages/index.html 在上面你可以找到很多你熟悉的工具。当然,如果没有也有和你喜欢的工具类似的工具。如果,你觉得这些工具太古来了,或者还不够。在页面的下方就有一些镜像站点的地址。通常,这些镜像的内容要比主站丰富许多。所以,你可以从很多途径得到这些包。现在我们就随便下载一个作为演练。如果你不建议,我们就下载一个 Fast Light Toolkit。当然,你也可以下载其他包。我这里只是作为讲解。
  在下载完成以后,我们将会得到一个后缀名为 *.DevPak 的文件。这个就是开发包文件。这个文件的使用和我们平时使用的安装文件一样。不同的是,安装文件会修改注册表,将安装信息些进去。如果系统重新安装,就需要重新安装程序。而这个安装文件不会将安装信息写入注册表。并且,只要安装程序的目录没有删除。下次安装的时候,就不许要再安装了。除非使用的 Mingw32过新或者过旧无法支持。现在,我们好好的保存这个文件。
  接下来话分两头,我们来介绍一下 Package Manager 这个程序你可以用两种方法启动。一种是点击Dev中的工具菜单,选中最后一项的Package Manager。另一种方法是到安装目录中,直接运行 Packman.exe 。运行以后你就会看到如下的一个界面。

如果,你运行以后没有看到左侧的工具栏或者上面的工具栏。你可以在View菜单中将其中的选项全部选上就可以了。下面介绍有关操作的一些方法。其中,Install按钮是用来安装开发包了。而Verify按钮是用来检查开发包的完整性的。而Remove按钮是用来删除开发包的。这个界面中间空白的部分是显示开发包图标的,左侧的工具栏是用来显示开发包信息的。其中包括开发包的名称、版本号、介绍和提供的站点等信息。上方的工具栏是用方便用户操作的。基本上菜单中有的。工具栏上都有了。所以,普通的工作工具条就可以完成了。

  好了,到这里。我们的话再说回来。所谓言规正传,大概就是派这个用场的吧。(怎么突然想到鲁迅先生的《阿Q正传》呢?真奇怪。)我们介绍一下安装包的方法。
  安装工具包的方法有两种,当然是我常用的两种。至于有没有其他方法。自然也有。只是我个人还是比较喜欢这两种。如果哪位有什么比较怪诞的方法自然也可以用。只要能够顺利使用,用什么方法都是可以理解的嘛。所谓条条道路通罗马嘛。有些时候,我们不必过于计较方法,我们要的是结果。
  第一种方法,就是像我们平时使用安装程序一样。直接双击那个工具包。Package Manager 会很热情的跳出来帮你完成任务的。然后,你就更具提示一步步的走就可以了。这种方法的确很不错。只是觉得用起来不够专业。如果被人看到,会被别人认为是菜鸟的。所以,我这里为大家隆重介绍第二种安装方法。首先你先运行Package Manager 然后点击Install按钮。她会提示你告诉她工具包的位置。只要选择好工具包,点击确定。剩下的就和第一种方法一样了。这种方法看起来会比较老鸟一点。不过太麻烦了。不是么?那么是不是我们要在菜鸟和老鸟种做选择呢?当然不用。我个人意见是,平时就用第一种方法。有人请教什么的,就用第二种方法。
  好了,安装好以后。我们会看到Package Manager中会多一个图标。这个就是你刚才安装的工具包。如果觉得用起来不爽就选中她然后按Remove就可以了。
  下面你可能会问我,我安装完了。改如何用呢?问的好,值得表扬。这个问题嘛……当然是很简单的啦。要是连这个也不能回答我怎么能在这里说,你在那里听呢?(诶,原本想早点说完回家睡觉的……)对于不同的开发包,使用的方法会有所不同。如果是IDE自身的开发包。那么,你在使用IDE的时候IDE会在运行时调用的。就不用你操心了。要知道,一个人操心太多会多很多皱纹和死很多脑细胞的。而一些开发工具就可以在新建工程中看到,至于具体在哪里要看具体的包而定。
  接下来我还是以Fast Light Toolkit为例。来说明包的使用方法。Fast Light Toolkit是一个GUI开发包。(我想你该知道什么是GUI吧,说的简单一点就是Graphical User Interface。说得复杂一点,就是用户界面)好了。我们现在开始新建一个工程,这个在上文中已经介绍过了。不过这次在确定项目的时候有些改变。这次,我们在点击新建工程后出现的对话框中,选择GUI选项卡。然后选择FLTK。因为FLTK是用于C++的。所以,我们这里只能用C++而C是不可选状态的(怎么有硬来的感觉)。接下来的一切和上次我们说好的一样了。Dev会自动生成一个main.cpp的文件。里面有一些基本的代码。保存后编译,运行。可以看到一个你仰慕以旧的Windows界面。(啊,终于看到你了,窗口)我想,那么聪明的你应该会举一反三,知道其他的工具包如何使用吧。所谓,师父领进门,修行靠自身。我也不可能一步到位啊。
  最后,我想请你们注意一下。在安装包之前,先要看清楚有关包的说明。因为有些包是有依赖关系的,必须在安装某个包之后再安装她。这就像,要知道有些时候同样的结果是不能将操作的顺序颠倒一样。比如,你必须先有个妻子,然后才有个儿子。(除非特殊情况)

第四章 工程的导入与导出


  四这个数字总是不太吉利。在中国是这样,在国外好像也这样吧。既然我们不能跳过四,直接到五(因为那样,别人会认为是不是自己漏看一章而觉得遗憾终生的)所以,我就在这章介绍一些无关痛痒的东西。就算不吉利也不会影响到我们开发的。
  对于用惯VC开发的人。有许多项目在Dev下开发还要重新在设置和编写,会觉得很头痛。所以,Dev就在她的里面加了一项将VC6.0的工程文件转换成Dev的工程文件的功能。(这句话好绕口啊,下次把它改成绕口令算了)是个好消息吧。
  首先,我们必须有一个VC6.0的工程做测试。没有也没有关系,看看长长见识也不错。反正这章讲的是不关痛痒的内容。接着,我们开始导入了。选择文件,导入,导入Visual C++ Project。点击后,会出现一个对话框。在第一个选项选择*.dsp的路径(填入也可以,只要你能把完整路径写出来)。选择完毕后。对话框就会出现有关该项目的一些属性。你只要选择就可以了。比如,第二个框内的内容就是问你是导入那种生成配置。Debug或者Release还是其他什么的。第三个框内问的是你要将Dev的项目文件放在哪里。(当然是在你自己的计算机上,还有哪里?难道让勇气号带到火星上不成?)全部选择好以后就可以了按确定了。在等待一段时间后(具体长短,要看你的程序体积如何,如果像VC编写的Linux Kernel。那么是要等一段比较长的时间。如果有的话)。现在开启Dev项目看看。怎么样,一切正常吧。是不是很兴奋?或许有人要问,这么重要的功能为什么说是无关痛痒的功能呢?其实,更具我使用下来的情况。导入的代码能够成功编译的,算是你幸运的要准备去买六合彩了。因为,直到现在我还没有导入过一个可以成功编译的项目。(如果你可以,记得一定要告诉我,好让我见识一下传说中的可导入工程)。
  下一个功能是导出。这个功能当然不像上一个功能那么那样。不过,功能对于一般的开发者不会有太大的用处。你可别以为这个导出和上面的导入是相对的。就是把 Dev工程导出成VC6.0工程。这个导出,是讲C/C++的文件工程导出成网页形式。或者写字板形式的。如果你是像用这个工程做教程的确实是一个很不错的功能。不过,开发者还是编写代码大于写教程吧(好像我是个不务正业的开发者)。所以,我认为这个功能是有些无关痛痒。下面介绍一下使用方法。
  选择文件,导出后,会有三个选项。到HTML,到RTF和工程到HTML。第一个和第二个是对单个文件进行导出。而第三个是对整个工程进行导出。(就是所有的代码)第一,第二个的导出文件我也不用介绍了。反正也就那么一个文件。我具体的介绍一下第三个所生成的文件。第三个生成了一个*.html,*的内容是由你决定的。和一个名位code的文件夹。里面包含了转成html文件的程序代码。当然,这些代码都是有色彩提示的,很不错。这样看来,所谓的导出工程,其实就是将整个工程文件转换成一个类似于网站树型结构的功能。所以说,这个功能用于说明代码是很不错的。
  好了介绍到这里,介绍了一些无关痛痒的功能。我想,你们也许也对Dev-Cpp有一个大概的了解了吧。如果,你想知道更多的关于导入和导出的功能的介绍。可以提出来。大家一起来解决嘛。

 

文外音:


文章就暂时介绍到这里,以后还会继续介绍。有关Dev-Cpp/Mingw32更多的内容以后会一一为各位展示。敬请期待。
觉得这次的文章,好像没有上次那么有含金量,而且写作风格也有所改变。如果你喜欢这种风格我以后会多运用,如果不喜欢请你说出喜欢那种风格的。我会作为参考的。
另外,还希望各位多多指教。我的格言:不论是程序还是思想,唯有通过不断的交流才能愈加完善。


Dev-Cpp/Mingw32 环境介绍(3)

上文回顾:


  上文《Dev-Cpp/Mingw32 环境介绍(2)》向各位介绍了一些有关Dev-Cpp的功能,其中有包的安装和一些小功能。希望能得到你的满意。这次,我们就继续介绍Dev-Cpp的其他功能。其实,说句实话。对于GNU的东西,我个人觉得还是提示符下用的舒服。我也不知道为什么。有很多功能,在提示符下很简单的打几个字符,可以完成像 Windows的IDE需要点很多鼠标才能完成的功能。我说这个并不是没有道理的空穴来风。本次我将为你展现我这一观点。

 

第五章 在Dev-Cpp下的程序调试

 

  对于任何程序员来说,程序的调试是再需要不过了。如果没有程序调试,那么程序的稳定又从何说起呢?现在我们就来看看如何使用Dev来调试我们亲爱的程序吧。
  众所周知,GNU有一个非常棒的调试程序GDB,可是由于常常使用VC。所以,对于这个许多人都有所而闻而未目睹这一程序的芳容。现在我们就来掀开他的盖头来。首先,我们超常,启动Dev-Cpp这次我们要做的是在Dev-Cpp下调试程序。在Dev-Cpp下,调试程序并不像在VC下那样有专门的程序界面来做。他的调试界面就在代码框的下面。只要选择下面的 调试 选项卡就可以看到调试界面了。
  在各位看到调试界面后,会不会有一种凄凉的感觉?其实我已经凄凉了好几年了。大家也就将就一下了。其中调试选项卡中还有三个选项。调试,回溯,输出。其中,调试就是将一些调试的命令做成按钮,方便各位操作。不过我个人觉得这个功能说方便也不方便。因为有些时候就是很简单的一个操作也会让使用的人手忙脚乱的。回溯,是将GDB调会的有关函数的信息显示出来,这个功能还不错。输出,是将用户的GDB命令直接输出给GDB程序,没有按钮了,不过这个界面有个不太好的地方,就是显示GDB返回信息的窗口太小了。有种管中窥豹的感觉,很不舒服。
  话说那么多,觉得有些罗嗦。各位是不是手痒痒了?(该不是小儿多动症吧?)现在随便开启一个程序,最好是代码行数多点的,参数多点的,函数多点的,提示符界面的程序。因为,这个可以帮助你们了解基本的运行机制嘛。
  点击调试窗口的调试按钮,如果你的程序没有调试信息,那么Dev会提示你是否重新编译程序加入调试信息。选择是。然后程序将使用Debug方式重新编译连接程序。在完成之后。我们就开看看自己的程序吧。首先,我们先要运行GDB。在次点击调试,或者将编辑区的光标移动到你要运行到的位置点击运行到光标。然后,程序就开始运行了。其中,你会看到在编辑区中有一个蓝色的条子。这个就指示你该程序运行到何处了。如果你愿意,可以继续向下运行一行。你只要点击下一步就可以完成。对于其他有关GDB的操作,比如代码的查看,变量的查看,函数的信息等等,只有通过输出来完成了。选择输出,然后在输出中的字符输入框中输入你的GDB命令。比如:list 这个命令将在下面的字符框中列出程序的代码。当然,你要上下找找,因为框太小,看起来很麻烦。
  好了,有关IDE中的调试,本人就介绍到这里。在深入的东西,当然也没有深入的东西了。再深入的话,怕我没有累死,大家可要看着烦死了。其实上面介绍的一些操作如果再提示符下很容易就Ok了。更本不需要那么复杂。我想,可能这也是Dev不能流行的一个主要原因吧。因为界面的操作太不人性化了。

 

第六章 在提示符下的程序调试


  上一章中,我们领略了Dev-Cpp下的调试。真是让人有些不感恭维。接下来我们来欣赏一下标准,经典的GDB调试。如果各位对Linux等系统有所了解的话,应该知道提示符是许多经典软件的常用界面。所以,要使用一些经典的东西,看来还是要在提示符下多熟悉熟悉了。当然,这里的提示符并不像各位想的那么麻烦,要有上百条命令要记忆。其实,像GDB 这样的程序,基本就是一个很简单的命令就可以解决了。而且非常灵活。
  接下来我就来介绍一个GDB的调试。
  首先我们必须要一个可以调试的代码。现在我们用gcc main.c -o main -g来生成可调试的代码。然后用gdb main 来启动gdb。是不是没有想象的那么复杂啊?如果顺利您会看到一段GDB的版权信息,接着是(GDB)这样一个提示符。现在您就可以对GDB下命令了。
  看看程序代码。如果,我们想看看调试程序的源代码而又不想开启main.c这个文件(更多的原因是要为后面设置断点等来做铺垫)。那么我们可以输入list或者,l就可以查看程序代码了。是不是啊?看来提示符并没有像我们想象的那么可怕。
  运行程序代码。虽然调试是可以那么我们该如何在调试的时候运行代码呢?很简单。输入run或者r就可以运行了。如果前面设置过断点,那么使用这个命令可以让程序运行到断点。
  为调试设置断点。使用break可以设置断点,让调试程序在断点停止运行的程序。break 后面必须有一个参数。参数可以是行号。如,break 10 就是在第10行设置断点。也可以是函数名称break main就是在main函数处设置断点。
  查看程序变量。如果您像查看程序中的变量,可以用paint或者p命令来实现。这两个命令后必须加上变量名称。如 p argc就是显示argc的值。而使用info命令可以查看相关的信息,如内存位置什么的。
  一步步运行程序。如果您像在断点后一步步的执行程序,可以用n或者next命令来执行下一行代码。
  退出调试。输入q退出程序。

  是不是觉得提示符下的调试要比IDE中的简单?你不要以为这就是GDB的全部功能。我在这里只是为各位展示一下GDB。如果各位要了解更多的关于GDB的使用方法。可以查看技术手册或者到网上寻找相关的文章,可以找到很多。
  最后,如果对于GDB和调试程序有什么疑问,我们可以一起探讨。


文外音:


这次的文章好像很短,我也觉得。但是,没有办法。所谓众口难调。这一章总是要讲的。干脆提早一些写好。下一篇我们将进入项目的建立和静态库的使用。我想一定会让你感到兴奋的。最后,希望你能够多多指教。我的格言:不论是思想还是程序,唯有通过不断的交流才能愈加完善。

 

Dev-Cpp/Mingw32 环境介绍(4)


上文回顾:


上文《Dev-Cpp/Mingw32 环境介绍(3)》向各位介绍了有关使用GDB调试程序的简单方法。本文我们将会看看Mingw32如何来使用静态连接库。虽然本文出炉的时间的确是有些慢了点。不过我想各位应该能够理解的。

第七章 在你的程序中使用静态连接库


  在Windows中也许各位都会熟悉以obj和 lib结尾的文件。这些文件就是Win32下的二进制文件和静态连接库。但是在Mingw32下有些特殊,我原来在第一章介绍过的。他们是o和a。很奇怪吧。不过我们这里只要知道如何使用就可以了。关于更多的不在本文的范围内。
  我们先以VC为例,各位知道在VC中使用静态库,要在连接程序的时候选择导入的静态库。参数为静态库的全名。比如winmm.lib但是在Mingw32 下有些不同。你所使用的参数为 -lwinmm这个就可以了。而-lwinmm的意思是导入静态链接库libwinmm.a。是不是有些想不通?下面我们来介绍一下在Dev中的使用和意义。
  首先我们启动Dev,新建一个工程。然后选择工程->工程属性。(如果你使用New Look图标,那么工程属性就是一个盾型图标。)然后,选择参数选项卡。在连接器的文本框中输入你要的参数,如-lwinmm。至于分割符,可以使用空格,也可以使用回车。不过我个人推荐回车。如果顺利,你的界面看起来会像下图。


  当然你如果要使用*.lib可以,只要将文件名直接填入就可以了。就像 winmm.lib。当然如果用绝对路径也可以。
  下面我们来看看静态连接库的格式。当然,我们不是从文件格式去分析,而是从调用格式看。通常静态库的文件名为 lib*.a其中*表示的就是任何字符。而在我们调用的时候,不需要将所有的文件名都用上,只需要使用*的内容就可以了。就像调用libwinmm.a的静态库我们只需要在连接的时候加参数 -lwinmm就可以了。前面的lib和后面的.a都不需要了。如果,还不太明白。可以看看dev安装目录中的lib目录。里面有很多win32下的静态连接库。自己分析一下文件名和调用方法就会很清楚了。
  最后我们实战一下静态连接库的使用。
  写什么好呢?写一个控制台上的音乐播放器吧。当然只是简单的播放音乐而已,而且路径不支持中文。这里只是为了熟悉一下静态库的使用。
  新建一个控制台工程,然后我们在main.c的代码中写如下代码。

//main.c
#include
#define MAX 255

int main(int argc, char *argv[])
{
    if (argc == 2)
    {
        char filename[MAX];
      
        strcpy(filename, "open ");
      
        strcat(filename, argv[1]);
      
        strcat(filename, " alias media");
      
        mciSendString("close media",0,0,0);

        mciSendString(filename,0,0,0);

        mciSendString("play media",0,0,0);

        system("pause");
    }
    else
    {
        printf("play.exe musicfilename");
    }

    return 0;

}
//main.c end

然后我们在工程属性的连接器参数中输入 -lwinmm 好了。开始编译。如果顺利,我们的程序就会编译成功。并且可以播放一些常用的音乐文件。高兴吧。

好了,这章我们就到这里用这个例子结束了。

问外音:
由于本人最近比较忙,所以原来的两章一文改成了一章一文。请原谅。下一章我们将介绍如何建立Mingw32的静态连接库。敬请期待。并且希望各位能够多提意见。因为不论是程序还是细想唯有通过不断的交流才能愈加完善。

 Dev-Cpp/Mingw32 环境介绍(5)


上文回顾:


上文《Dev-Cpp/Mingw32 环境介绍(4)》我们介绍了如何使用 静态连接库。今天我们介绍如何制作自己的Mingw32的静态链接库。至于Win32下的那种静态连接库我想熟悉Win32的人应该很清楚如何制作。所以我们这里就不做介绍了。

 

第八章 制作自己的静态链接库


  这是第八章,八这个数字很多人都喜欢。我也一样。(感觉好迷信啊。)这一章我们要来制作静态链接库,我相信各位一定会很高兴的。
  首先我先简单介绍一下静态链接库的作用。我们知道,C/C++程序生成目标代码的过程有,编写代码,编译代码,连接代码,生成目标代码。在连接代码的时候,会将编译后的二进制代码连接成目标代码。但是,有些时候。我们想让程序导入必要的代码,而不想导入无用的代码到我们的程序中。我们该如何呢?很简单,使用静态连接库。使用它我们就可以实现将在程序中使用的函数导入的目的。
  下面我们来一步步的学做静态链接库并且学会如何使用。
  我们现在先写一段代码,你可以用Dev也可以用记事本也可以用任何你喜欢的文本编辑器。像我就比较喜欢vi或者emacs作为平时的文本编辑器。话说远了,现在言规正传。我们写下下面的代码。

//HelloWorld.c

#include <stdio.h>

void HelloWorld(void)
{
        printf("Hello World");
}

上面那段C代码各位应该很熟悉的吧,那么经典的Hello World好让我怀念啊。保存为HelloWorld.c以后我们就开始生成了。
首先,我们先编译HelloWorld.c

gcc -c HelloWorld.c -o HelloWorld.o

这样我们得到一个二进制的文件HelloWorld.o

接着我们生成静态库。

ar cqs libHelloWorld.a HelloWorld.o

这样我们党额静态链接库就好了。如果有需要可以将其他的二进制文件名加HelloWorld.o的后面将他们连接成一个静态链接库。另外,生成的静态库文件名必须为lib*.a

好了,现在我们来使用我们的库吧。

接下来,我们为了能够使用方便,写一个如下头文件。

//HelloWorld.h
void HelloWorld(void);

接着我们开始使用我们刚才生成的静态库。写一个main.c的文件。

//main.c

#include "HelloWorld.h"

int main(void)
{
        HelloWorld();
        return(0);
}

使用gcc编译,假设我们这里所有的文件都保存在同一个目录下。

gcc -c main.c -o main.o

然后我们连接程序。

gcc main.o -o main.exe -L"./" -lHelloWorld

如果顺利我们会得到一个main.exe的文件。

在控制台下输入main.exe或者main就可以出现 Hello World 这组单词。

看了上面的文章是否很兴奋想要生成自己的静态链接库?其实,我个人觉得mingw32生成静态链接库要比VC生成的简单。不知道你有没有这样的感觉。

当然,如果你要在Dev下使用静态连接库,也是可以的。方法我在上一章已经说过了。只是,如果你要使用自己的库必须设置路径。

只要在连接器参数中添加 -L"你的库的所在的文件夹" 或者 将你的库保存到Dev安装目录中的lib目录中。

好了,本文就介绍到这里。如果有什么问题,可以在这里留言。

问外音:


这篇文章其实我真的很喜欢,不是文章喜欢,而是内容很喜欢。不知道各位如何想。这里介绍了一个生成静态库的方法,感觉比VC生成的要简单。其实在gcc的Linux平台下生成动态连接库还要比VC下生成不知道要简单多少倍了。如果说Win32中用于开发最好的平台是win2000那么,在那么x86系统中用于开发的平台莫过于Linux了。这章的内容也许对许多的程序员都有些陌生,我实在担心各位会在实践中会碰到问题,所以在这里还是希望各位在遇到困难时多到这里提问。最后还是我的一句名言:不论是程序还是思想唯有通过不断的交流才能愈加完善。(看过《古畑任三郎》么?主角总喜欢在发表观点后,说一句:我是古畑任三郎。感觉我也和他一样了。不过,这的确是一部不错的影片。至少比国内许多侦探片都好,没有额外的剧情,没有你你我我的爱情。纯粹是从一个破案的角度来拍摄的。推荐各位看看。)






map