① 网上的那个梦幻古龙的源码,怎么编译,最好能详细垫
ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单。估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思。一、ACE官方主页:我下载的是LatestBetaKit中的ACE.zip(LatestRelease中的压缩包好像有问题,我有WinRAR3.30解压缩报错)二、解压缩后放在D盘D:\ACE_wrappers三、在D:\ACE_wrappers\ace目录下新建文件config.h加入一行#include"ace/config-win32.h"四、编译:用VC6.0打开D:\ACE_wrappers\ace\ace.dsw左侧显示ACEDLLclassesACELIBclasses或1、从菜单上选择“编译”,“放置可远行配置”,选择你需要的工程配置“编译”,“重建全部”(或任一,如ACEDLL-Win32MFCDebug)此过程可能持续半小时至一个小时不等或2、从菜单上选择“编译”,“批构建”,选择你需要的工程配置此过程可能持续二至四个钟头产生的.lib文件位于D:\ACE_wrappers\ace\下,产生的.dll文件位于D:\ACE_wrappers\bin\下同样打开ace_static.dsw编译ACEs.libACEsd.libACE_RMCasts.libACE_RMCastsd.libTMCasts.libTMCastsd.libACE生成的dll和lib文件的命名规则:(d=debug,s=static)debug-aced.lib、debug+static-acesd.lib、release-ace.lib、release+static-aces.lib五、样例程序的编译用VC打开D:\ACE_wrappers\tests\tests.dsw“编译”,“批构建”六、自写程序的工程配置中篇:ACE程序员教程.pdf中的样例程序:网址:将网页上的原代码复制到一新建文件,并命名为server.cpp用VC打开,编译,重建全部,弹出对话框,“Thisbuildcommandrequire“,点”是“会出现以下错误如果有“Cannotopenincludefile:'ace/SOCK_Acceptor.h':Nosuchfileordirectory”工程-设置-C/C++:Preprocessor,附加包含路径:D:/ACE_wrappers如果有“Youmustlinkagainstmulti-threadedlibrarieswhenusingACE(checkyourprojectsettings)”工程-设置-C/C++:CodeGeneration-Userun-timelibrary:DebugMultithreadedDll如果有“errorC2065:'ACE_ERROR':undeclaredidentifier”errorC2065:'ACE_DEBUG':undeclaredidentifier#include"ace/Log_Msg.h"errorC4716:'ace_main_i':mustreturnavalue在main中加入return0;“errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)int__cdecl”工程-设置-Link-Input:对象/库模块:添加aced.lib附加库路径:D:\ACE_wrappers\ace编译client中遇到的问题1、errorC2039:'sprintf':isnotamemberof'ACE_OS'#include"ace/OS_NS_stdio.h"2、errorC2039:'strlen':isnotamemberof'ACE_OS'#include"ace/OS_NS_string.h"3、errorC2059:syntaxerror:'?'错误在这一句:ACE_DEBUG((LM_DEBUG,?UsageegX\n?));将?改为"4、无法找到动态链接库aced.dll于指定的路径为系统变量PATH加上D:\ACE_wrappers\bin静态包含:工程-设置-C/C++-预处理程序定义中加入,ACE_AS_STATIC_LIBS例1server编译后生成server.exe16Kserverd.exe97Kservers.exe124Kserversd.exe669K(servers.exe较适合发布)例2client编译后生成client.exe16Kclientd.exe97Kclients.exe124Kclientsd.exe669K(clients.exe较适合发布)测试clients127.0.0.11919servers1919下面是马维达老师写的:(转自huihoo)发表于:3/31/2003-04:24翻译的一点小东西,希望能对大家有帮助。其实也不敢称为是翻译的,水平太烂了,大家将就着看吧:)使用MicrosoftVisualC++在win32平台上生成和安装ACE:注意:关于MSVC5.0和ServicePack3的使用有一些问题,过去一些用户在sp2中使用良好的代码在sp3种却会引发一些问题。感谢Bill的细心查找,这一神秘的问题被解决了。答案?(哦,这儿有一个好答案。。。)这可能是因为有多个版本的sp3较早版本的sp3有一些bug,而后来的版本修正了这些错误,从微软网站上下载的1998年6月16日版本的sp3是一个良好的版本。如果X03-50158是那些拥有sp3的光盘序列号的一部分,那么这些版本也是良好的。但是不管任何版本的sp3,其STL的实现都有错误,详细情况请浏览。感谢BenEng对这些错误的修正。现在的SP4(希望只有一个版本)已经修正了STL中的死锁问题。我们现在将不再积极的支持MSVC4.X以及以前的版本,ACE可和这些编译器一起工作但是可能会丢失一些好处。1.将ACE分发包界压缩到一个目录中,这将在那个目录中生成一个包含ACE的目录ACE_wrappers。接下来的步骤中假设ACE分发包被解压缩到ACE_ROOT=C:\ACE_wrappers中,因此ACE将会存在于ACE_ROOT\ace目录中。2.在ACE_ROOT\ace目录中创建一个文件,命名为config.h,其内容为:#include"ace/config-win32.h"3.在VC++中加载ACE的工程文件(ACE_ROOT\ace\ace.dsw)4.每个工程都会包含多个配置,这些配置是Debug/Release,MFC/Non-MFCh和Static/Dynamic库版本等选项的混合。确定你所需要的构造(例如,调试代码需要ACE的调试版本)。所有这些不同的配置可以为你提供一些便利,你可以或者采用不同的模式以构造不同配置的应用,或者通过改变ace\config.h来改变在NT上的不同配置。注意:如果你使用动态连接,请保证ACE_ROOT\bin被添加到你的path环境变量中,否则你将在运行程序的时候碰到寻找ace.dll或者aced.dll的问题。5.如果你在WindowsNT或者Windows2k上构建ACE,你可以马上开始构造她而不需任何改变,如果你在Windows9x/me上构建,那么你必须在ACE_ROOT\ace\config.h.的#include块之前添加一行:#defineACE_HAS_WINNT40这将在ACE中移掉一些WinNT/Win2K中特有的代码。6.如果你希望使用MSVC自带的标准C++头文件(C++StandardDraft2种定义的iostream,cstdio…..),则应该在ACE_ROOT\ace\config.h.的#include块之前添加一行:#defineACE_HAS_STANDARD_CPP_LIBRARY17.如果需要和MFC一起使用,增加如下定义到你的config.h文件中,注意,如果你想使用spawn一个新的线程,则必须保证使用THR_USE_AFX标志来spawn线程。#defineACE_HAS_MFC1缺省的,ACE工程使用MSVC运行时的动态DLL版本,你也可以选择使用ACE的不关心运行时库的静态(LIB)版本。我们选择仅与动态运行时库连接的原因在于基本上所有的NT机器上都会安装这些库,而我们则可以因此而减小代码的大小。如果你希望ACE与MFC的静态版本连接,则可以在config.h中定义ACE_USES_STATIC_MFC。然而,如果你希望静态的连接所有的库(包括MSVC运行时库),就需要自己修改工程文件了。8.如果要构建ACE的静态版本,则需要在config.h中定义ACE_AS_STATIC_LIBS,此宏在那些希望使用ACE的静态版本的应用工程中也必须定义。作为一个可选项,你可以在#includestatementinACE_ROOT\ace\config.h.之前添加一行:#defineACE_NO_INLINE来取消函数内联从而减小静态库(和你的运行码)的大小。9.ACEDLL和LIB库的命名规则:我们使用如下的规则明明使用MSVC的ACE的DLL和LIB文件。"Library/DLLname"+(是静态库吗?"s":"")+(包含调试信息?"d":"")+{".dll"|".lib"}在MSVC环境中使用ACE的信息可以在这里找到。-----------------------------------------------------------------------一、安装TAO,需要先编译并安装ACE。二、ACE的编译和安装步骤见。如果你英文程度还可以的话,最好直接阅读这两篇文档。说到底,中文文档只是“权宜之计”;汉语并不太适合进行逻辑性的表述。但我还是把其中的一些段落编译如下(VC6.0+ACE-5.2.1+TAO-1.2.1):ACE的编译与安装一般规则ACE中的许多特性可以通过在$ACE_ROOT/ace/config.h中定义一些宏来进行修改。这些宏应该总是在包括针对你的平台的配置文件之前出现。但是,如果你想要取消/重定义在针对特定平台的配置文件中定义的宏,#undef应该在配置文件之后出现。如果你计划在多种平台上编译ACE,你也许需要考虑克隆源码树。步骤:1.将ACE发布文件解压缩到某个目录中,在其中将会创建含有所有文件的ACE_wrappers目录。在下面的步骤中,ACE_wrappers目录将以ACE_ROOT为名来指称。2.在ACE_ROOT\ace目录中创建一个名为config.h的文件,在其中包含:#include“ace/config-win32.h”3.现在加载ACE的项目文件(ACE_ROOT\ace\ace.dsw)。4.其中的每个项目都含有若干不同的配置(可混合Debug/Release、MFC/Non-MFC、Static/Dynamiclibrary版本)。你可以从中选择你所需的配置,或是使用ace/config.h来进行调整。注意:如果你使用动态链接库,在运行使用ACE的程序时,确定你在PATH中包括了ACE_ROOT\bin。5.如果你的系统平台是WinNT或2000,那么无需任何改动你就可以开始编译了。如果是Windows9x/Me,你需要在ACE_ROOT\ace\config.h中的#include语句之前增加:#defineACE_HAS_WINNT406.如果你想要使用MSVC标准C++头(iostream、cstdio……),在ACE_ROOT\ace\config.h中的#include语句之前增加:#defineACE_HAS_STANDARD_CPP_LIBRARY17.要与MFC一起使用ACE,再增加下面的定义:#defineACE_HAS_MFC1注意如果你想要通过CWinThread派生新线程,一定要设置THR_USE_AFX。在缺省情况下,所有的ACE项目都使用DLL版本的MSVC运行时库。尽管如此,你仍然可以选择使用static(LIB)版本的ACE库。如果你想要将MFC作为静态库链接进ACE,你可以在config.h文件中定义ACE_USES_STATIC_MFC。但如果你想要静态链接所有的东西(包括MSVC运行时库),你就需要自己修改ACE的项目文件。8.ACE的静态版本是通过定义ACE_AS_STATIC_LIBS来编译的。在链接静态ACE库的应用项目中也应该使用这个宏。你也可以在config.h文件中增加#defineACE_NO_INLINE来取消函数内联并减小静态库(和你的可执行程序)的大小。9.ACEDLL和LIB的命名方案:"Library/DLL名"+(是否为静态库?"s":"")+(是否启用了Debugging?"d":"")+{".dll"|".lib"}10.配置完毕后编译即可。选择dll版本,编译生成的dll文件在ACE_ROOT\bin中,相应的lib文件在ACE_ROOT\ace中。ACE测试各测试程序在ACE_ROOT\tests中。在其中也有一个工作空间文件可用来编译所有的测试程序(tests.dsw)。一旦你编译了所有测试程序(可使用批编译),你可以运行tests目录中的perl脚本run_test.pl或批处理文件run_tests.bat来进行所有测试。TAO的编译与安装确定VC的CL.EXE在你的访问路径上。设置ACE_ROOT或TAO_ROOT环境变量。例如:setACE_ROOT=C:\ACE_wrappersTAO最好放置在ACE_wrappers(这也是缺省情况)。1.确定ACE已经编译和安装。2.确定ACE_wrappers\bin已在“Tools|Options”中的“ExecutableDirectories”中列出。如果在MSVC下使用TAO_IDL编译器就需要进行此设置。3.加载tao\TAO.dsw,并编译TAO库。4.要编译Cubit测试,加载performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw,并编译客户和服务器。TAOACE.dswTAOACE.dsw是一个VisualC++5.0/6.0工作空间文件,它加载的项目包括ACE、TAO、TAO_IDL(编译器)、gperf、orb服务库,以及一些单独的可执行程序(比如NamingService,等等)。它可以用于编译所有的用于编译/运行TAO应用的文件。三、我选择编译的是dll版本(Release),并在ACE的config.h文件中定义了“#defineACE_HAS_STANDARD_CPP_LIBRARY1”。编译后我所得到的ace.dll的大小是1.13MB,相应的ace.lib的大小是1.77MB;TAO.dll的大小是1.47MB,相应的TAO.lib的大小是2.74MB。所有文件约有MB,包括源程序、编译生成的中间文件,等等,但有些例子及服务我没有编译。祝学有所成!马维达-------------------------------------将ACE与VC6集成在一起一.打开Tools>Options>Directories加入以下内容:ExecutableFile:C:\ACE_wrappers\binIncludeFile:C:\ACE_wrappers\C:\ACE_wrappers\TAOC:\ACE_wrappers\TAO\orbsvcsLibraryFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcsSourceFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcs二.加入C:\ACE_wrappers\bin到系统环境变量path中三.设置系统变量ACE_ROOT=C:\ACE_wrappersTAO_ROOT=C:\ACE_wrappers\TAO
② 学习编程的一般步骤是什么
学习编程,从何入手?x0dx0ax0dx0a1、计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。x0dx0a2、电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。x0dx0a3、计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。x0dx0a4、目前通用的编程语言有两种形式:汇编语言和高级语言。x0dx0a5、汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作,例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。x0dx0a6、高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,例如使用堆栈、寄存器等,这样就大大简化了程序中的指令。同时,由于省略了很多细节,编程者也就不需要有太多的专业知识。x0dx0a7、高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的VB、VC、FoxPro、Delphi等,这些语言的语法、命令格式都各不相同。x0dx0a8、高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:x0dx0a解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。x0dx0a9、编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。x0dx0ax0dx0a《编程语言,你选哪一个》x0dx0ax0dx0a 虽然不是每个人都会成为编程高手,但你在使用软件的时候,也许会冷不丁地冒出个问号:这些神奇的软件是怎么编出来的?而对那些将投身于此的“大虾小虾”们,接下去的可能是:我什么时候也能编出个更好的软件来?好吧,那从哪里开始呢?编程语言名录繁多,选择一个适合自己的编程语言,是你首先要迈出的一步。x0dx0a 你了解最常见的编程语言吗?你知道最流行的程序开发环境吗?x0dx0a 你知道Basic、Pascal、C、C++和Jave家族这些常见的编程语言各自都有什么优点吗?如果你对这些都不是很清楚的话,那么下面这一部分你可不能错过。x0dx0a 基础篇x0dx0a Basic:x0dx0a Basic是一种非常适合初学者学习的编程语言。它简单易懂,其命令和语句一般都是英文单词或缩写,易于理解,便于记忆。只要具有一些英语知识的人都可以很快地掌握它。扩展地Basic语言常见地有:BASICA、GWBASIC、Quick Basic、Ture Basic和Turbo Basic。其中比较好的是Turbo Basic,它是一种可编译的语言,所以它的速度更快、效率更高。Turbo Basic不仅保持了Basic语言一贯的比较容易学习的特点,还具有像PASCAL语言那样严谨的基本控制结构。x0dx0ax0dx0a Pascal:x0dx0a Pascal语言是一门结构化的语言,它具有丰富的数据类型和控制结构,简明易懂,所以特别适合与教学。Pascal语言还是一种自编译的语言,这就使它的可靠性大大提高了。在Pascal的各个版本中,尤以Turbo Pascal的功能最为强大。如今,在许多学校的计算机语言课上,学的都是Pascal语言,用的都是Turbo Pascal。x0dx0ax0dx0a C:x0dx0a C语言作为系统描述语言,既可以用来写系统软件,有可以用来写应用软件,自然受到广大用户的喜爱。C语言有许多优点,它灵活性好、效率高、实用性强,而且对硬件的控制能力很强。人们常把C语言称作中级语言,意指它是一门介于高级语言和汇编语言之间的语言。x0dx0ax0dx0a C++:x0dx0a 随着软件规模的不断扩大,人们发现,使用传统的“数据结构+算法”的结构化编程模式已经难以适应软件的发展了。这时,“面向对象+消息”的程序设计思想便逐渐被人们所注意。对于C语言,人们发现当C语言程序的规模超过5万行时,程序就变得难以调试和维护。这时,将面向对象的思想引入C语言变成了程序员的共同心愿。于是,C++语言便应运而生了,它以C语言为基础,引入了面向对象的思想,成为目前最流行的编程语言之一。x0dx0ax0dx0a Java:x0dx0a 如果要用一句话来描述Java,那就是“一种简单的、面向对象的、解释型的、健壮的、安全的、结构中立的、可移植的、高性能的、多线程的、动态的语言”。同是面向对象的语言,Java与C++相比更加安全而且具有更高的可移植性。Java程序需要在安装有Java虚拟机的平台上执行。要求在Java应用程序运行时每一步都强制执行安全措施,这必然会导致编译执行速度下降,但鱼与熊掌不可兼得,毕竟Java已经如此强大了。x0dx0ax0dx0a JavaScript & Java Applet:x0dx0a Java是一种具有独立功能得强大得语言,与网络没有必然得联系;相比之下,JavaScript和Java Applet就更适合在网页中开发和使用。JavaScript被称为Java的脚本程序,是Java程序的简化。通过编程,你可以根据需要动态地创建你的主页。JavaScript是一种解释型的语言,所以程序不需要进行预编译,只有当程序被执行时才被转化为可执行代码。x0dx0a 与前者相比,Java Applet才更像是一个程序。它是一类被嵌入到Web页中的由与Java兼容的浏览器控制执行的程序,Java Applet程序需要事先被编译成class文件,然后将它导入到网页中由浏览器控制执行。x0dx0a 如果能熟练地掌握这两种语言,你的网页一定会增色不少。x0dx0ax0dx0a SQL语言:x0dx0a SQL语言简称“结构化查询语言”,它结构简洁、功能强大、简单易学,如今无论是像Oracle、Sybace、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些微机上数据库开发系统,都支持SQL语言作为查询语言。x0dx0ax0dx0a 开发篇x0dx0a 当前在不同的程序设计领域都有各自的一些著名的软件开发工具,我们今天就先把目光投向VB、VC、Delphi、C++ Builder、PowerBuilder这些大哥大级的开发工具上吧。x0dx0ax0dx0a Visual Basic:x0dx0a VB除了有强大得数据库编程能力,还引入了面向对象得程序设计思想。它功能强大,学习简单。而且,VB还引入“控件”的概念,使得大量已经编好得VB程序可以被我们直接拿来使用,就像搭积木一样简单。如今,VB已经有了6.0版。对于初学者来说,用VB编程是一件很容易上手的事。x0dx0ax0dx0a Visual C++:x0dx0a Visual C++可以说是为专门的程序设计人员而推出的。它的功能在当前的程序设计工具中可以说是最强大的,可以说没有VC做不到的,只有你想不到的。x0dx0ax0dx0a Delphi:x0dx0a 以Object Pascle为基础,扩充了面向对象的能力,并且完美地结合了可视化的开发手段。Delphi使用了本地编译器直接生成技术,使程序的执行性能远远高于其它产品生成的程序。它还是真正的面向对象的编程语言,人们预测Delphi将会成为可视化编程的主流环境。x0dx0ax0dx0a C++ Builderx0dx0a CB是将C++的面向对象与可视化紧密结合起来的一个强大的、开发效率高的集成开发环境。CB的兼容性极强,它支持OWL 、VCL和MFC这三种常见的类库。在BC和VC下通过的程序几乎不用做任何修改就可以在CB下编译通过。可以说CB是VC强有力的竞争者。x0dx0ax0dx0a PowerBuilder:x0dx0a PowerBuilder是新一代数据库应用开发工具,它支持应用系统同时访问多种数据库。PowerBuilder是完全可视化的数据库开发工具,它提供了大量控件,大大加快了项目的开发速度。其编程语言叫做PowerScript,也是一种高级的、结构化的编程语言。PowerBuilder适合初学者快速学习数据库开发,是一种适用面非常广的开发工具。x0dx0ax0dx0a方案一 Basic语言 & Visual Basicx0dx0ax0dx0a优点 x0dx0a(1)Basic 简单易学,很容易上手。 x0dx0a(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。 x0dx0a(3)众多的控件让编程变得象垒积木一样简单。 x0dx0a(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。x0dx0ax0dx0a缺点 x0dx0a(1)Visual Basic 不是真正的面向对象的开发工具。 x0dx0a(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。 x0dx0a(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。x0dx0ax0dx0a结论:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。x0dx0ax0dx0a方案二 Pascal语言 & Delphix0dx0ax0dx0a优点 x0dx0a(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。 x0dx0a(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。 x0dx0a(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。 x0dx0a(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。x0dx0ax0dx0a缺点 x0dx0aDelphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。x0dx0ax0dx0a结论: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。x0dx0ax0dx0a方案三 C语言 & Visual C++x0dx0ax0dx0a优点 x0dx0a(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。 x0dx0a(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。 x0dx0a(3)VC是微软制作的产品,与操作系统的结合更加紧密。x0dx0a缺点 x0dx0a对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它过于专业x0dx0ax0dx0a结论: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。x0dx0ax0dx0a方案四 C++语言 & C++ Builderx0dx0ax0dx0a优点 x0dx0a(1)C++语言的优点全部得以继承。 x0dx0a(2)完全的可是化。 x0dx0a(3)极强的兼容性,支持OWL、VCL和MFC三大类库。 x0dx0a(4)编译速度非常快。x0dx0a缺点 x0dx0a由于推出的时间太短,关于它的各种资料还不太多。x0dx0ax0dx0a结论:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。x0dx0ax0dx0a方案五 SQL语言 & Power Builderx0dx0ax0dx0a对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。
③ 怎么学习C++设计模式举例说明
说起C++ 的系统和网络编程开源库,恐怕没有人敢否认ACE的王者地位。其实ACE不光是一个实用的程序库和框架集,它更是一个设计模式的典范应用。ACE在线索引文档:http://www.dre.vanderbilt.e/Doxygen/Stable/ace/index.html
ACE具有极其明显的分层体系结构,一般划分为三个层次:
1. 操作系统适配层
2. C++包装层
3. 构架和模式层
前面的两层都是对各个平台的底层OS API进行包装,最后化身成通用的C++类或者函数。举个简单的例子,比如ACE_OS::sleep(1)在任何平台下都是休眠一秒,这样就很方便写出跨平台的代码了。更好玩的是第三层,ACE把设计模式玩到了极致,设计出了许多实用的组件。比如任务和主动对象(Active Object),反应堆(Reactor),接受器(Acceptor)和连接器(Connector)。下面简单讲一下这三类模式的应用。
1. 任务和主动对象(Active Object)
那么到底什么是主动对象呢?传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的。也就是,调用线程(calling threads)被“借出”,以执行被动对象的方法。
而主动对象却不一样。这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。因而,如果你想象一个传统对象,在里面封装了一个线程(或多个线程),你就得到了一个主动对象。
ACE中的主动对象的实现核心是ACE_Task。要实现一个主动对象,只需继承自ACE_TASK。ACE_Task有几个虚函数比较重要。open(), close()分别是对应服务初始化和关闭。可以在open()调用activate()来创建线程执行任务。而ACE_TASK中的所有主动线程的执行入口是虚函数svc()。只需在svc()中加入你的主动对象需要执行的任务代码即可。
2. 反应堆(ACE_Reactor)
在设计模式教科书中这么描述反应堆模式:反应堆本质上提供一组更高级的编程抽象,简化了事件驱动的分布式应用的设计和实现。除此而外,反应堆还将若干不同种类的事件的多路分离集成到易于使用的API中。特别地,反应堆对基于定时器的事件、信号事件、基于I/O端口监控的事件和用户定义的通知进行统一地处理。
描述地比较抽象,简单来讲就是:
a.创建事件处理器,以处理感兴趣的事件。比如handle_input()函数处理可能收到的输入。
int CMyACETask::handle_input (ACE_HANDLE fd);
b.把事件处理器指针和感兴趣的事件登记到反应堆,具体来说就是
m_reactor->register_handler(this, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::WRITE_MASK );
c.在用户已登记的某个事件发生时,反应堆发出对处理器中相应方法的回调。
3. 接受器(Acceptor)和连接器(Connector)
ACE_Acceptor工厂允许应用开发者改变“助手”对象,以用于:
被动连接建立
连接建立后的处理
同样地,ACE_Connector工厂允许应用开发者改变“助手”对象,以用于:
主动连接建立
连接建立后的处理
接受器和连接器的具体代码比较简单,请见索引文档
④ 考c++程序员应看哪些书
《The C++ Standard Library: A Tutorial and
Reference》原文版
中文版:《C++标准程序库:自修教程与参考手册》
这是一本网络全书式的C++标准库著作,是一本需要一再查阅的参考大全。它在完备性、细致性以及精确性方面都是无与伦比的。本书详细介绍了每一标准库组件的规格和用法,内容涵盖包括流和本地化在内的整个标准库而不仅仅是STL。正如本书副标题所示,它首先适合作为教程阅读,尔后又可用作参考手册。
浅显易懂的写作风格使得这本书非常易读。如果你希望学习标准库的用法并尽可能地发挥其潜能,那你必须拥有这本书。正如网络上所言,这本书不仅仅应该摆在你的书橱中,更应该放到你的电脑桌上。我向每一位职业C++程序员强烈推荐。
《Standard C++ IOStreams and Locales: Advanced
Programmer's Guide and Reference》原文版
中文版《标准C++输入输出流与本地化》
C++标准库由STL、流和本地化三部分构成。关于STL的书市面上已经有不少,但罕见流和本地化方面的专著。本书是这两个领域中最优秀的一本,迄今为止没有任何一本书比这一本更全面详尽地讨论了流和本地化。如果你不满足于停留在“会用”流库的层面,千万不要错过它。
2001年夏天,我草草翻阅过这本书的中文版,从内容到包装都给我留下了比较深刻的印象——不过负面的居多一些。2003年秋天,无意中得知某网络书店正以超低价格甩卖这本书的中译本,情不自禁,一阵唏嘘。
《Effective STL》影印版、中文版
读完Scott 的《Effective C++》和《More Effective
C++》的中译本之后,我一直期待这本书的中文版。我从潘爱民先生的个人主页上了解到,他和他的合作伙伴似乎早已完成了这本书的翻译工作,可惜至今市面上仍不得见。幸运的是,我们可以看到它的原版。
本书是使用STL的程序员必读之作。在这本书中,Scott向我们讲述STL容器和算法的工作机制以及如何以最佳方式使用它们。和Scott的其他作品一样,这本书的写作风格清晰、精确,具有极佳的可读性。看过这本书以后,我想你也许会和我以及其他C++程序员一样产生这样的想法:Scott什么时候会写出一本“More
Effective STL”?
《Generic Programming and the STL: Using and Extending the C++
Standard Template Library》影印版、中文版《泛型编程与STL》
关于STL,我还提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and
Extending the C++ Standard Template
Library》(《泛型编程与STL》,中国电力出版社)。这本书散发着浓厚的学院气息。Andrew Koenig和Barbara
Moo在《Accelerated C++: Practical Programming by
Example》一书末尾郑重推荐另外两本进阶好书(除了他们自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本书!
网络编程
在网络编程时代,C++应该扮演着怎样的角色,让ACE(Adaptive Communications Environment)来告诉你。
Douglas C. Schmidt, Stephen D. Huston,《C++ Network Programming》Volume 1:
Mastering Complexity with ACE and Patterns、Volume 2: Systematic Reuse with ACE
and Frameworks
中文版:,《C++网络编程》卷1:运用ACE和模式消除复杂性、卷2:基于 ACE 和框架的系统化复用
采用C++进行企业级网络编程,目前ACE(以及这两本书)是一个值得考虑的选择。ACE是一个面向对象、跨平台、开放源码的网络编程框架,目标在于构建高性能网络应用和中间件。Douglas是ACE的创始人,Stephen则已为ACE提供了数年的技术支持和顾问服务,两位都是ACE社群(是的,ACE的影响和实际应用的程度已经形成了一个社群)的专家。
ACE并不单单被大学和研究所追捧,它已经被成功地应用于世界上成千上万个商业应用中。在电信、宇航、医药和财经领域的网络系统中,ACE已经并继续发挥着重要的作用。如果你准备开发高性能通讯系统,你应该考虑考虑这一汇集世界顶尖专家智慧的成果。
除了使用C++面向对象设计技术和模板等高级语言特性外,ACE还运用了大量的模式。《C++网络编程》卷1和卷2并不仅仅教你关于ACE的方方面面,它还会教给你模式和通用框架设计等高级技术等。所以,作为一名中、高级C++程序员,即使你很少进行正儿八经的C++网络程序设计,阅读这两本书同样可以从中受益。
是的,并非所有网络应用都要使用Web服务器(以及其他应用服务器)和重量级组件模型,换个思路,它们或许也可以从轻量级的ACE组件中获益。
杂项
以下几本书所以被列入“杂项”单元,是因为我没有考虑到合适的归类方法,它们和上面的书籍一样,值得一读。
Bruce Eckel,《Thinking in C++》影印版二版、三版(又名卷二)
中文《C++编程思想》二版、卷一:标准C++导引 卷二:实用编程技术
《Thinking in
C++》的第1版于1996年荣获“软件研发”杂志评选的图书震撼大奖。最新推出的第2版对内容进行了大幅改写和调整,以反映C++标准化带来的影响以及近几年面向对象领域最新研究和实践成果。“输入输入流”、“多重继承”、“异常处理”和“运行时类型识别”等高级主题连同C++标准化以后增加的一些内容则被放入第二卷中。Bruce是一名经验丰富的C++讲师和顾问,其培训和写作经验都是世界一流水准,他的作品比那些“玩票”的技术人员写的东西更能吸引读者。事实上,在同类图书中,对于大多数读者而言,这本书的可读性要超过TCPL和《C++
Primer》。顺带一提,访问作者的站点,你可以先睹第二卷的风采。
Andrew Koenig, Barbara E. Moo,,《Ruminations on C++: A Decade of Programming
Insight and Experience》原版、中文版《C++沉思录》
Andrew是世界上屈指可数的C++专家。这是一本关于C++编程思想和程序设计技术而非语言细节的著作。如果你已经具有一定的基础,这本书将教你在进行C++编程时应该怎样思考,应该如何表达解决方案。整本书技术表达透彻,文字通俗易懂。Bjarne这样评价这本书:本书遍布“C++是什么、C++能够做什么”的真知灼见。
Stanley B. Lippman,《Inside The C++ Object Model》影印版、中文版《深度探索C++对象模型》
从编译器的角度观察C++可以使你知其然并知其所以然。本书探讨了大量的C++面向对象程序设计的底层运作机制,包括构造函数、函数、临时对象、继承、虚拟、模板的实例化、异常处理、运行期类型识别等,另外还介绍了一些在实现C++对象模型过程中做出的权衡折衷。喜欢刨根问底的C++程序员不要错过这本书。
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns:
Elements of Reusable Object-Oriented software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,《Design Patterns:
Elements of Reusable Object-Oriented software》影印版、中文版《设计模式:可复用面向对象软件的基础》
设计可复用的面向对象的软件,你需要掌握设计模式。本书并非专为C++程序员而写,但它采用了C++(以及Smalltalk)作为主要示例语言,C++程序员尤其易于从中受益。四位作者都是国际公认的面向对象软件领域专家,他们将面向对象软件的设计经验作为设计模式详细记录下来。这本书影响是如此深远,以至于四位作者以及本书都被昵称为GoF(Gang
of
Four)。本书学院气息浓厚,行文风格严谨简洁,虽然它不如某些讲解模式的书籍易读,但真正要精准地理解设计模式,本书是终极权威。学习设计模式,这本书需要一而再、再而三的咀嚼。顺带一句:请将设计模式化作开拓思维的钥匙,切莫成为封闭思维的枷锁。
John Lakos,《Large-Scale C++ Software Design》中文版《大规模C++程序设计》、候捷:《STL 源码剖析》
还有一些C++好书值得一读,恕此处无法一一列出。例如John Lakos的著作《Large-Scale C++ Software
Design》(《大规模C++程序设计》,中国电力出版社)和侯捷先生的《STL 源码剖析》(华中科技大学出版社)等。
《STL
源码剖析》是一本很有特色的书,但我认为它还可以更好。我个人期待侯捷先生自第一版发行以来经过对模板技术的沉淀和再思考之后,再写一本剖析得更深入、更透彻并且更全面的“第二版”。遗憾的是,侯捷先生在完成《C++
Templates: The Complete Guide》一书的翻译后似乎决定暂时告别模板、泛型编程和STL领域。
使用C++成功开发大规模软件系统,不仅需要很好地理解大多数C++书籍中讲述的逻辑设计问题,更需要掌握《大规模C++程序设计》中讲述的物理设计技术。当然,这本书的确有点过时了,不过,如果你的精力和金钱都比较宽绰,买一本看看并无坏处。
至此,我想有必要声明一下,有一些(好)书没有得到推荐,主要原因如下:
以上这些书已经足够多、足够好了。
我不会推荐通过正常渠道很难购买到的书籍 ——不管是中文版还是英文版。
作(译)者名气大小不影响我的推荐。我们是在看书,不是看人。
我不会推荐我从来没有看过的书。我至少要看过其中的某个版本(包括电子档)。这个“看”,一般指“认真阅读”,不过有一些也只能算是“浏览”。
结语
作为一名普通技术写译者,我深知技术创作和翻译的艰辛(和快乐),并多多少少了解一些有关技术书籍创作、翻译、制作、出版以及市场推介背后的细节。今天,我不会再对一本看上去差强人意的图书信口开河。罗列同一本书的各种版本的用意只在于为你多提供一些信息,让你多一种选择。
在本文成文的后期,我给Bjarne写了一封信,请教如果他来写这篇文章会怎么写。他给了我简明扼要的建议。在肯定以上列出的绝大部分图书都是世界顶尖水平的C++著作的同时,Bjarne提醒我别忘了向专家级程序员推荐《The
C++ Standard : Incorporating Technical Corrigenm No. 1》
《The C++ Standard : Incorporating Technical Corrigenm No. 1》
Bjarne还友好地提醒我,在我的推荐列表中没有哪一本有助于C++程序员进行Windows编程——这正是我的本意。在这篇文章中,我只推荐、点评平台中立的C++著作(网络编程除外)——和操作系统无关,和集成开发环境无关,我甚至幻想它们和编译器也无关。你可以根据业务开发需要,选读自己喜爱的领域相关的C++书籍。
说到“系统无关、平台中立”,我不由得想起了“抽象层”的概念。开发实际应用的C++程序员通常工作于特定操作系统、特定开发环境和特定业务领域之中,而对标准C++和C++标准库扎实而深刻的把握,无疑是你得以在不同的操作系统、不同的开发环境以及不同的业务领域之间纵横驰骋的“抽象”本钱。
⑤ 求C++ 网络编程最好的书籍 谢谢了
学习编程基础也很重要的,路要一步一步地走。不要老是想到看一本书就成为高手。我给你推荐一些书吧,你可以选一些看。其中很多都是经典之作。C++是以C为基础的,所以你最好看一下C语言,网络方面,《计算机网络》和《TCP/IP详解》是必看的。望采纳。
1、算法
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑
离散数学及其应用----------Kenneth H.Rosen
具体数学—计算机科学基础--------Donald.E.Knuth
2、数据结构
数据结构 C++
数据结构算法与应用
3、C语言
C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata
C程序设计(第三版)---------------------------谭浩强
C语言大全(第四版)---------------------------HERBERT SCHILDT
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱与缺陷-----------------------------------Andrew Koenig
5、C++
C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
6、操作系统
深入理解计算机系统(修订版)-------RANDAL E.BRYANT
计算机操作系统(第六版)
7、编译原理
跟我一起写makefile
《编译原理技术和工具》------- Alfred ------- 龙书
《现代编译原理-C语言描述》 ----------- Andrew W. Appel ----------- 虎书
《高级编译器设计与实现》 ----------- Steven S.Muchnick ----------- 鲸书
8、网络
计算机网络第四版中文版-----------Andrew S.Tanenbaum -------网络编程三剑客
TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客
UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客
用TCP/IP进行网际互联-----------Douglas E. Comer
高级TCP/IP编程-------------------Jon C. Snader
C++网络编程-----------------------Douglas Schmidt
UNIX环境高级编程(第2版)--------------------Richard Stevens
9、Linux
Linux内核设计与实现
Linux内核完全注释
LINUX内核分析及编程