ACE简介以及ACE

阅读: 评论:0

ACE简介以及ACE

ACE简介以及ACE


.html
1 引言 接触ACE已经有长一段时间了,但一直来没有应用的实际需求,因此这方面的学习进展一直很慢,到目前才初步学习了一下日志、TCP/UDP简单网络程序的编写。最近由于工作需要的驱使,学习了ACE_DLL这个类。下面我将从一个完全初学者的角度,谈谈如何认识和了解ACE。 2 初识ACE 刚开始听到ACE这个词,我就对它产生了兴趣,因为据说它提供了跨平台的网络编程,能够在UNIX下跑自己写的网络程序,兴奋啊。于是第二天,就去书店买了本《ACE程序员指南》( Stephen D. Houston 著,马维达 译,中国电力出版社出版),那天晚上搞了很久终于在 VC60 上搭建了环境,跑了第一个程序,感觉非常良好。 STOP !!!废话不说了,下面转入正题,谈谈 ACE 环境的搭建吧。 3  ACE 开发环境的搭建 3 . 1  获取最新版的 ACE 安装包 去这个网址( .html )获取一个最新发布( Latest Release )的 ACE 包,然后安装到你的计算机上。 3 . 2 环境变量的设置    假设你将 ACE 安装到了“ D:ACEACE_wrappers ”,那么按照如下步骤进行环境变量的设置: (1)     鼠标右击“我的电脑”选择“属性 - à 高级 - à 环境变量”,出现以下界面: 图1 ACE环境变量的设置 (2)     新建变量为“ ACE_ROOT ” , 值为“ D:ACEACE_wrappers ”的环境变量。然后退出,重新启动你的电脑,设置完后 必须重启电脑 ,才能生效!!!!!!!!!!!!!!!!! 3 . 3 编译 ACE 上面两步做完了之后,我们需要自己编译得到 DLL 和相应的 LIB ,我们需要进行两次编译。一次以 DEBUG 方法编译,生成的 DLL 和 LIB 名称为: ACEd.dll 和 ACEd.lib 。另一次以 RELESE 方式编译,生成的 DLL 和 LIB 名称为: ACE.dll 和 ACE.lib 。 编译完成之后,生成的动态库都在“ $ACE_ROOTlib ” ( 即: D:ACEACE_wrapperslib) 目录下。 4 在 VS2003 中设置环境 ( 1 )打开 VS2003 ,选择“工具 à 选项 - à VC++ 目录”,如图二: 图 2 VS2003 的 ACE 包含目录 /lib 库路径设置 (3)     选择“包含文件”,将 ACE_ROOT 加进入,如图 3 : 图 3 ACE 包含文件的添加 (4)     选择“库文件”,添加库文件的路径,(这个好象也可以不加哈,可以自己试一下看)如图 4 : 图 4 ACE 库文件的添加 (5)     OK ,开始测试一下,写个 HELLO WORLD 吧。 5 写一个 HELLO WORLD ( 1 )新建一个“ MyFirstACE ”的 WIN32 项目,如图 5 : 图 5 :新建 HELLO WORD ( 2 )对工程进行设置,选“控制台应用程序 --- 》空项目”,如图 6 : 图 6 HELLO WORLD 应用程序的设置 ( 3 )点“完成”,然后在解决方案管理器的源文件文件夹中添加一个 MyFirstACE.cpp ,如图 7 : 图 7 添家 CPP 文件 ( 4 )修改工程的设置(这一步很重要): “项目 --- 》 MyFirstACE 属性”,进入下面的属性项设置界面,将运行时库设置为“多线程调试( MTd )”: 图 8 属性项设置    然后在将链接器的输入项进行设置:如图 9 : 图 9 :设置链接器输入 点“确定”。 ( 5 )添加以下源代码到 CPP 文件中: #include "ace/Log_Msg.h" #include <iostream> using namespace std; int main(int argc,char**) {      ACE_DEBUG((LM_INFO,ACE_TEXT("HELLO WORLD!")));      ();      return 1; } ( 6 )编译,哈哈,弹出下面的错误提示,图 10 : 图 10 出错了 ( 7 ) 赶快从 $ACE_ROOTlib 中把 ACEd.dll 和 ACEd.lib 拷贝一份到现在的工程目录的 DEBUG 文件夹下,如下图 11 : 图 11 包 DLL 和 LIB 拷贝到 DEBUG 文件夹 ( 8 ) 再重新编译一下吧: 图 12 HELLO WORLD 多了很多信息,这些是调试信息,可以用开关关闭的。 6 ACE_DLL 动态库操作类 ACE 提供了很多很多工具给我们使用,最大优点就是跨平台并且源代码公开的。 ACE_DLL 类主要用于对 DLL 的操作。 6 . 1 成员列表 下面这个表格列举了所有ACE——DLL的成员,包括从基类继承的成员。

ACE_DLL(int close_on_destruction=1) ACE_DLL [explicit]
ACE_DLL(const ACE_TCHAR *dll_name, int open_mode=ACE_DEFAULT_SHLIB_MODE, int close_on_destruction=1) ACE_DLL [explicit]
ACE_DLL(const ACE_DLL &) ACE_DLL
close(void) ACE_DLL
close_on_destruction_ ACE_DLL [private]
dll_handle_ ACE_DLL [private]
dll_name_ ACE_DLL [private]
error(void) const ACE_DLL
error_ ACE_DLL [private]
get_handle(int become_owner=0) const ACE_DLL
open(const ACE_TCHAR *dll_name, int open_mode=ACE_DEFAULT_SHLIB_MODE, int close_on_destruction=1) ACE_DLL
open_i(const ACE_TCHAR *dll_name, int open_mode=ACE_DEFAULT_SHLIB_MODE, int close_on_destruction=1, ACE_SHLIB_HANDLE handle=0) ACE_DLL [private]
open_mode_ ACE_DLL [private]
operator=(const ACE_DLL &) ACE_DLL [private]
set_handle(ACE_SHLIB_HANDLE handle, int close_on_destruction=1) ACE_DLL
symbol(const ACE_TCHAR *symbol_name, int ignore_errors=0) ACE_DLL
~ACE_DLL(void) ACE_DLL

表一 ACE 的所有成员列表 6 . 2 几个关键的方法介绍: open(const ACE_TCHAR *dll_name, int open_mode=ACE_DEFAULT_SHLIB_MODE, int close_on_destruction=1) 参数说明: 1) dll_name :要打开的动态库名称; 2) open_mode :打开方式; 3) close_on_destruction :这个参数有两个取值,1表示在析构的时候关闭打开的句炳,0表示不关闭; 4 )如下面的例子:      ACE_DLL *P = new ACE_DLL();// 实例化一个DLL管理器      P->open("CBase",ACE_DEFAULT_SHLIB_MODE,1);// 打开一个名为CBase的DLL,打开方法为默认,是否关闭为1 symbol(const ACE_TCHAR *symbol_name, int ignore_errors=0) 参数说明: 1) symbol_name :需要调用的DLL库中的方法或对象的名称; 2)  ignore_errors :当值为1时,在日志中不生成错误信息,如果为0,那么在日志中生成错误信息; close(void) 参数说明: 没有参数,关闭打开的动态库 6 .3 一个详细的例子介绍: 例子里面: (1)CSon继承了CBase里的一个纯基类,编译的时候,CSon需要依赖CBase。 (2)CBase需要调用CSon里面一个函数,得到基类的一个对象的指针,来使用。 (3)testacedllcall工程是用来调用CBase里的函数,来测试的。

本文发布于:2024-02-03 07:28:17,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170691649549533.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:简介   ACE
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23