ACE windows vs2008 安装和配置

来源:互联网 发布:黑魂3捏脸数据 编辑:程序博客网 时间:2024/05/24 15:42

1、下载ACE-5.5  

     ACE的安装文件可以在http://download.dre.vanderbilt.edu/中下载,ACE-5.5.tar,下载完成后将其解压,我的解压路径为c:/ACE_wrappers。

2、设置环境变量

    添加一个名为ACE_ROOT的用户环境变量,值为刚才ACE的解压路径c:/ACE_wrappers;添加用户的PATH环境变量,值为%ACE_ROOT%/lib,这样才能保证系统能找到ACE编译生成的动态连接库。

3、设置VS2008的C++开发项目信息

   菜单-工具-选项-项目和解决方案-VC++目录,在右侧目录列表中选择"包含目录",添加$(ACE_ROOT),在右侧目录列表中选择"库文件",添加$(ACE_ROOT)/lib。

4、编译ACE

在ACE_ROOT/ace目录创建一个名为config.h的文件。编辑文件并加入以下内容
       #define ACE_HAS_STANDARD_CPP_LIBRARY 1
       #include "ace/config-win32.h"

其中第一行是因为我想用标准C++跨平台,第二行则是必须要的,表明当前是在win32的环境下进行ACE的项目开发。进入ACE_ROOT/ace目录中,直接打开ace_vc8.sln,直接生成ACE项目的Debug版和Release版,编译过程大概需要几分钟。完成后,在%ACE_ROOT%/lib中能找到以下四个文件,分别是"ACE.dll","ACE.lib","ACEd.dll","ACEd.lib",其中带"d"的表示的是Debug版本。

5、验证ACE

打开VS2008,建立一个空项目,选择空文件的,不要带预加文件的,将ACE程序员手册中的第一个程序拷入其中。配置项目属性->链接器->输入->附加依赖项,添入ACEd.lib。编译,就能看到你的ACE版的"hello world"。
#include "ace/Log_Msg.h"


int ACE_TMAIN(int argc,char* argv[])
{
ACE_DEBUG((LM_DEBUG,ACE_TEXT("Hello World !/n")));
return 0;
}

 

若有如下错误,则修订配置

出错提示:

----- Build started: Project: RegisterServer, Configuration: Debug Win32 ------
Compiling
RegisterServer.cpp
Linking
RegisterServer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl ace_os_wmain_i(class ACE_Main_Base &,int,wchar_t * * const)" (
__imp_?ace_os_wmain_i@@YAHAAVACE_Main_Base@@HQAPA_W@Z) referenced in function _wmain
RegisterServer.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl ACE_Service_Config::open(int,wchar_t * * const,wchar_t const *,int,int,int)" (
__imp_?open@ACE_Service_Config@@SAHHQAPA_WPB_WHHH@Z) referenced in function "int __cdecl ace_wmain_i(int,wchar_t * * const)" (?ace_wmain_i@@YAHHQAPA_W@Z)
D:/ACE_OUTPUT/Game//RegisterServerd.exe : fatal error LNK1120: 2 unresolved externals
Build log was saved at "
file://d:/My Sources/RegisterService/RegisterServer/Debug/BuildLog.htm"
RegisterServer - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
问题分析
出错信息显示,不能解析函数ace_os_wmain_i()以及      ACE_Service_Config::open()。
从这里可以看出,链接器需要UNICODE版本的ace库,而我们在生成ACE的时候,并没有生成宽字符
的UNICODE版本。

解决办法:
打开项目的属性页,找到配置属性,在字符集中,选择多字节字符集。再重新编译,问题解决。
 

原创粉丝点击