http://dev.21tx.com/2004/04/30/10354.html
ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单。估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思。
我的系统环境是:Win2k pro(sp4)、VC6.0 (sp5)
过一阵,我的主页上要开论坛,并设VC专区,欢迎大家上去交流 http://www.liufei.com
一、ACE官方主页:http://www.cs.wustl.edu/~schmidt/ACE.html 下载地址:http://deuce.doc.wustl.edu/Download.html 我下载的是Latest Beta Kit中的ACE.zip(Latest Release中的压缩包好像有问题,我有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 左侧显示 ACE DLL classes ACE LIB classes 或1、从菜单上选择“编译”,“放置可远行配置”,选择你需要的工程配置 “编译”,“重建全部”(或任一,如ACE DLL - Win32 MFC Debug) 此过程可能持续半小时至一个小时不等 或2、从菜单上选择“编译”,“批构建”,选择你需要的工程配置 此过程可能持续二至四个钟头 产生的.lib文件位于D:/ACE_wrappers/ace/下, 产生的.dll文件位于D:/ACE_wrappers/bin/下 同样打开ace_static.dsw 编译 ACEs.lib ACEsd.lib ACE_RMCasts.lib ACE_RMCastsd.lib TMCasts.lib TMCastsd.lib
ACE生成的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中的样例程序: 网址:http://www.cs.wustl.edu/~schmidt/ACE_wrappers/docs/tutorials/guide-tutorials.html 将网页上的原代码复制到一新建文件,并命名为server.cpp 用VC打开,编译,重建全部,弹出对话框,“This build command require ...“,点”是“ 会出现以下错误 如果有“Cannot open include file: 'ace/SOCK_Acceptor.h': No such file or directory” 工程-设置-C/C++: Preprocessor,附加包含路径:D:/ACE_wrappers 如果有“ You must link against multi-threaded libraries when using ACE (check your project settings)” 工程-设置-C/C++: Code Generation - Use run-time library : Debug Multithreaded Dll 如果有“error C2065: 'ACE_ERROR' : undeclared identifier” error C2065: 'ACE_DEBUG' : undeclared identifier #include "ace/Log_Msg.h"
error C4716: 'ace_main_i' : must return a value 在main中加入 return 0; “error LNK2001: unresolved external symbol "__declspec(dllimport) int __cdecl” 工程-设置-Link-Input: 对象/库模块:添加aced.lib 附加库路径:D:/ACE_wrappers/ace 编译client中遇到的问题 1、error C2039: 'sprintf' : is not a member of 'ACE_OS' #include "ace/OS_NS_stdio.h" 2、error C2039: 'strlen' : is not a member of 'ACE_OS' #include "ace/OS_NS_string.h" 3、error C2059: syntax error : '?' 错误在这一句: ACE_DEBUG((LM_DEBUG,?Usage egX <hostname> <port_number>/n?)); 将?改为" 4、无法找到动态链接库aced.dll于指定的路径 为系统变量PATH加上D:/ACE_wrappers/bin 静态包含: 工程-设置-C/C++-预处理程序定义中加入 ,ACE_AS_STATIC_LIBS 例1server编译后生成 server.exe 16K serverd.exe 97K servers.exe 124K serversd.exe 669K (servers.exe较适合发布) 例2 client编译后生成 client.exe 16K clientd.exe 97K clients.exe 124K clientsd.exe 669K (clients.exe较适合发布) 测试 clients 127.0.0.1 1919 servers 1919
更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn