C++网络开发包ACE环境的配置与调试
ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单。估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思。我的系统环境是:Win2k pro(sp4)、VC6.0 (sp5)过一阵,我的主页上要开论坛,并设VC专区,欢迎大家上去交流htt
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
提醒大家要注意一点
一定在使用任何ACE代码前调用ACE::init(),使用完之后调用ACE::fini()。如果忘记写编译器是不会提醒你的。也就是会得到ACE本来要解决的——运行时错误
开发环境:vs2005
1,要安装ACE当然先下载ACE包了,我是直接在官方下载的,下载地址是:http://www.riverace.com/ACE/ACE56SRC.tar.gz
目前这个是最新版本。我放在D:/ACE_wrappers 。这个路径没什么严格要求,呵呵。
2,给自己的电脑设定环境变量。具体如下:右击“我的电脑”,依次选:属性——高级——环境变量。在弹出的对话框中的用户变量栏点新建,变量名为ACE_ROOT,值为D:/ACE_wrappers 。再编辑PATH得值,也就是多加入D:/ACE_wrappers/lib ,点确定就完成设置了。
3,设定编译环境。打开vs2005,依次选:工具——选项——项目和解决方案——VC++目录。然后在右上救角处的下拉框中选包含文件,新建一个包含文件路径,填入:$(ACE_ROOT) 。同样在选库文件,新建一个库文件,填入:$(ACE_ROOT)/lib 。确定完成。在D:/ACE_wrappers/ace中添加一个config.h文件,并写下以下内容:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#include "ace/config-win32.h"
4,在D:/ACE_wrappers 中找到ACE_vc8解决方案文件,打开它,编译Debug和Release两个版本。经过漫长等待,编译结束后,会在D:/ACE_wrappers/lib中找到Debug版的ACEd.dll、ACEd.lib,以及Release版的ACE.dll、ACE.lib。
5,在使用时,在项目中引入ACEd.lib就可以了:右键项目,选属性——连接器——常规,在附加库目录中填:D:/ACE_wrappers/lib 。同样在连接器子结点选输入,在附加依赖项栏填:ACEd.lib。确定完成。
6,编译,发现已经可以编译带有ACE的C++程序,安装完成!
操作系统:windowsXP SP2
开发环境:vs2005
1,要安装ACE当然先下载ACE包了,我是直接在官方下载的,下载地址是:http://www.riverace.com/ACE/ACE56SRC.tar.gz
目前这个是最新版本。我放在D:/ACE_wrappers 。这个路径没什么严格要求,呵呵。
2,给自己的电脑设定环境变量。具体如下:右击“我的电脑”,依次选:属性——高级——环境变量。在弹出的对话框中的用户变量栏点新建,变量名为ACE_ROOT,值为D:/ACE_wrappers 。再编辑PATH得值,也就是多加入D:/ACE_wrappers/lib ,点确定就完成设置了。
3,设定编译环境。打开vs2005,依次选:工具——选项——项目和解决方案——VC++目录。然后在右上救角处的下拉框中选包含文件,新建一个包含文件路径,填入:$(ACE_ROOT) 。同样在选库文件,新建一个库文件,填入:$(ACE_ROOT)/lib 。确定完成。在D:/ACE_wrappers/ace中添加一个config.h文件,并写下以下内容:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#include "ace/config-win32.h"
4,在D:/ACE_wrappers 中找到ACE_vc8解决方案文件,打开它,编译Debug和Release两个版本。经过漫长等待,编译结束后,会在D:/ACE_wrappers/lib中找到Debug版的ACEd.dll、ACEd.lib,以及Release版的ACE.dll、ACE.lib。
5,在使用时,在项目中引入ACEd.lib就可以了:右键项目,选属性——连接器——常规,在附加库目录中填:D:/ACE_wrappers/lib 。同样在连接器子结点选输入,在附加依赖项栏填:ACEd.lib。确定完成。
6,编译,发现已经可以编译带有ACE的C++程序,安装完成!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)