最近在写服务器程序,自己折腾了好久,最后发现已经有ACE这样的库可以现成用了,果断开始学习,先记录一下配置过程吧。
环境:
操作系统:Windows sp3 (听说要被淘汰了,好不舍得啊!)
ACE版本:ACE-6.2.0.zip
IDE:VS 2008 (听说这个也要淘汰了,幸好ACE还没嫌弃它!)
准备工作:
下载ACE库,http://download.dre.vanderbilt.edu/,都是鸡肠啊,没办法,下载个ACE-6.2.0,上面说windows系统的要下.zip扩展名的哦!
编译ACE:
我这种懒人就不懂了,为啥还要自己编译啊,直接给个编译好的不就完事了吗?
(1)解压缩ACE-6.2.0.zip,默认解压缩后文件夹是ACE_wrappers,而我的完整路径是“D:\ACE\ACE_wrappers”,把这个路径考下来。
(2)我的电脑——>属性——>高级选项卡——>环境变量按钮,用户变量组里新建,变量名:ACE_ROOT,变量值:C:/ACE_wrappers;编辑变量名Path,添加:%ACE_ROOT%/bin;%ACE_ROOT%/lib。(这里贴个图吧)
(3)编译ACE,在ACE_ROOT/ACE文件夹里添加一个在ACE_ROOT/ace目录创建一个名为 config.h的文件。编辑文件并加入以下内容
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
#include "ace/config-win32.h"
#define ACE_LACKS_CDR_ALIGNMENT
其中第一行是因为我想用标准C++跨平台,第二行则是必须要的,表明当前是在win32的环境下进行ace的项目,第三行很重要,是关于ACE_InputCDR的字节对齐问题。
进入ACE_ROOT/ace目录中,能发现ACE现在已经带VS2008的编译项目了,直接打开ace_vc9.sln,直接生成ACE项目的Debug版和Release版,编译过程还是要等好几分钟的。编译链接完成后,在ACE_ROOT/lib中一共生成了四个文件,分别是"ACE.dll","ACE.lib", "ACEd.dll","ACEd.lib",其中带"d"表示的是Debug版本。
(4)配置vs2008,打开VS2008,选择工具(Tools)——> 选项(Options)——> 项目和解决方案(Projects and Solutions)——>VC++目录(VC++ Directories)
可执行文件(Executable files):添加$(ACE_ROOT)/bin
包含文件(Include files):添加$(ACE_ROOT)
库文件(Library files):添加$(ACE_ROOT)/lib
(5)测试,建一新的工程win32工程,填入以下代码:
#include "ace/Log_Msg.h"
int main (int argc, char *argv[])
{
ACE_TRACE(ACE_TEXT ("main"));
ACE_DEBUG ((LM_INFO, ACE_TEXT ("Hello/n")));
getchar();
return 0;
}
记得最重要的一点,test工程上鼠标右键菜单,添加(D)——>现有项(G)...,选择到C:/ACE_wrappers/lib文件夹选择ACEd.lib文件,添加。
好了,F5启动调试,出现黑背景窗口(像TC编译时的那种),显示Hello。
好了,这样就大功告成了,记下来以后用的!
以上是高手牛人的原文,再加两句吧,<ace/os.h>已经被<ace/OS_main.h>取代了,添加头文件的时候要注意了哦!