bitman的专栏

看美人颜红,心窃喜;纵有来生复世,知己难求;且饮酒西楼,把江山灌醉,莫问心忧!...

TAO使用指南 -- 编译ACE和TAO

使用的环境是: WinXP Professional + MSVC SP5

TAO完全支持Win32API,(包括Windows NT, Windows 2000, Windows 95/98/ME)VC5.0和VC6.0均可编译。

一. Win32+VC6.0下编译和安装ACE和TAO
将网上下载的TAO软件包解压缩到某个目录,在该目录下会有ACE_wrappers目录。
请按照以下步骤来执行:


1. 新建两个环境变量:
ACE_ROOT=ACE_wrappers   所在目录;
TAO_ROOT=ACE_wrappers/tao


2. 在ACE_ROOT/ace目录下建立一个空文件config.h,里面包含一句:
#include "ace/config-win32.h"
以说明是要在win32平台下进行编译。
注:
(1) #include "config-win32.h"亦可
(2) 最好在#include之前加上#define ACE_HAS_STANDARD_CPP_LIBRARY 1   以使用MSVC的STL库.


3. 如果是98/ME,则在ACE_ROOT/ace/config.h的最前面加上
#define ACE_HAS_WINNT4 0
来关掉一些NT/2000中特有的代码。


4. 如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件
中的#include语句前添加下面的行:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的STL库时会有一些小麻烦.


5. 如果在ACE中要使用MFC的库,则需要在config.h中添加:
#define ACE_HAS_MFC 1

在默认情况下,所有的ACE工程使用的是MSVC的DLL文件作为运行时库。你可以选择使用ACE的静态库文件(LIB)而不需考虑这些运行时库。选择动态链接的原因是所有的NT都会包含这些dll文件(节省空间). 如果你想使用MFC的静态库版本,则需要在config.h中加入以下的宏定义:
#define ACE_USES_STATIC_MFC 1
你也可以全部使用静态库,这需要你在ACE的工程文件中自己设置。

6. 如果定义了ACE_AS_STATIC_LIBS 宏,则ACE 库将被编译成为静态库。如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:
ACE_AS_STATIC_LIBS.

作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在ACE_ROOT/ace/config.h文件的#include语句前添加如下的宏定义
#define ACE_NO_INLINE
来禁止内联函数。

7. 用VC打开TAO和ACE的工程文件:ACE_ROOT/tao/taoace.dsw,开始编译ACE和TAO. 注意ACE和TAO有Debug和Release两个版本. 你在开发自己的程序时,如果是Debug版的程序, 必须链接Debug版的TAO库, 如果是Release版的程序,必须链接Release版的TAO库。

taoace.dsw中包含了许多工程, 工程之间是有依赖关系的. 所以这个工程编译的顺序比较重要. 关于编译的顺序, 下文叙述.

每个工程都包含有一些不同的配置:Debug/Release、MFC/Non-MFC、Static/Dynamic等版本。你必须确定你所需要的版本。如,要生成你程序的debug版,则需要debug版的ACE。

注意:如果你用动态(DLL)版本的TAO,在开发程序时,需要将ACE_ROOT/bin目录添加到你的程序的PATH环境变量中,否则程序会报告找不到动态链接库.

8. 编译顺序.
TAO中有好多服务可能是你用不到的. 所以编译时没有必要将所有的程序全部编译一遍. 要知道编译TAO还是个艰巨的任务.我目前只用到了Naming和Event服务, 并且没有用它的实时CORBA功能. 所以我
的编译顺序是:

说明 需要编译的工程
---------------------------------------
核心库 ACE DLL Files
TAO DLL Files
IDL编译器 gperf Files
TAO_IDL_FE_DLL Files
TAO_IDL_BE_DLL Files
TAO_IDL Compiler Files
POA PortableServer Files
名字和事件服务 IORTable Files
Svc Utils Files
CosNaming Files
Naming_Service Files
Messaging Files
CosEvent Files
CosEvent_Service Files
NT_Naming_Service Files
----------------------------------------
TAO的主页上有一个可以自动编译所有TAO工程的脚本, 记不得在那里了.

9. 编译后得到的文件分散于各目录中:

可执行程序和动态链接库文件: $ACE_ROOT/bin

lib文件: $(ACE_ROOT)/ace,
$(TAO_ROOT)/tao,
$(TAO_ROOT)/orbsvcs/orbsvcs


头文件: $(ACE_ROOT),
$(TAO_ROOT),
$(TAO_ROOT)/orbsvcs

10. ACE的DLL和LIB的命名规则:
当使用MSVC编译时的命名规则如下:

"静态库/DLL文件名" + (是静态库吗? "s" : "") +
(是Debug模式的库吗? "d" : "") + (.dll/.lib)


11. 测试TAO
TAO的测试代码位于TAO_ROOT/tests目录下。有一个vc的工程文件:
TAO_tests.dsw来编译所有的测试代码。

阅读更多
个人分类: ACE网络编程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭