ACE服务端编程1:使用VS2010编译ACE6.0及从ACE5.6升级的注意事项

ACE是一个跨平台的用于并发通信的C++框架,项目开始时使用的是ACE 5.6发布版,目前最新的ACE版本是6.3.0。

网上一直有一种黑ACE的氛围,主要黑点在于ACE的复杂和作者的背景,结合实际应用的经验来说,ACE还是C++里最成熟、稳定、全面的网络通信框架,看看有多少论文是与ACE有关的就能验证这一点,如果喜欢轻量级的,可以试试boost asio、Muduo,不过各有坑点~

考虑项目的稳定性和开发环境的原因,此次选择了ACE6.0.0版本作为升级版本,编译工具也从VS2003升级到VS2010。

使用VS2010编译ACE6.0:

1、下载ACE6.0版:

下载地址:http://download.dre.vanderbilt.edu/previous_versions/

最新版本下载地址:http://download.dre.vanderbilt.edu/

直接选择ACE-6.0.0.zip,不包含TAO+CIAO+DAnCE这些框架。。

2、将压缩包中的文件夹解压到D盘;

3、添加环境变量:ACE_ROOT="D:\Ace6.0\ACE_wrappers"  这是ACE解压后的目录:

4、添加环境变量:Path="%ACE_ROOT%\lib":

5、在ACE_ROOT\ace目录下新建config.h文件,文件内容:

#include "ace/config-win32.h"

6、直接用VS2010打开ACE_vc10.sln进行编译;编译成功后悔在lib目录下生成Aced.dll和Ace.dll。

ACE的项目划分较细,解决方案下有684项目,不过编译时间很快。

ACE6.0从ACE5.6升级的注意事项

开发工具同时从VS2003升级到VS2010,升级的过程较为顺利,虽然项目转换后报出100多个错误,不错主要是以下两个原因:

1、ACE5.6中的OS.h文件在6.0中被删除,改为OS_main.h,可以看到OS_main.h有下面这段注释:

解决办法:更改所有OS.h的include。

2、ACE_OS::lseek\ACE_OS::open\ACE_OS::close等函数报错,主要是ACE6.0中的文件IO模式有改变,并且默认不再包含其引用。

解决办法:在项目中引入以下几个头文件。

#include <ace/OS_NS_string.h>
#include <ace/OS_NS_stdio.h>
#include <ace/FILE_Addr.h>
#include <ace/FILE_Connector.h>
#include <ace/FILE_IO.h>
#include <ace/OS_NS_sys_stat.h>
#include <ace/OS_NS_unistd.h>
#include <ace/OS_NS_fcntl.h>

 


 

记录,为更好的自己!

posted @ 2015-02-06 15:27  全栈工程狮  阅读(1701)  评论(1编辑  收藏  举报