敬业的IT人 >> 编程开发 >> C/C++ >> C++网络开发包ACE环境的配置与调试

C++网络开发包ACE环境的配置与调试

敬业的IT人 互联网 佚名 2008-1-3 19:33:03

  ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单。

  估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思。

  我的系统环境是:Win2k pro(sp4)、VC6.0 (sp5)

  过一阵,我的主页上要开论坛,并设VC专区,欢迎大家上去交流

  

  下载地址:

  我下载的是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 MFCDebug)

  此过程可能持续半小时至一个小时不等

  或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中的样例程序:

  网址:

进入讨论组讨论。

  将网页上的原代码复制到一新建文件,并命名为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 : DebugMultithreaded 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

浏览URL 进入讨论组讨论。
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com