1、TAO使用指南TAO使用指南发信站: BBS 水木清华站 (Thu May 8 18:35:49 2003), 站内最近正在将一个工程由Orbix2000向TAO移植. 将一些心得和经验奉上, 算是给DOC版做点贡献. 说的不对, 请大家指正. 同时您有什么心得也不仿写出来嘛 :) 1. 什么是TAO?TAO是美国华盛顿大学的CORBA界大牛Douglas C. Schmidt博士领导开发的一个实时CORBA平台. 它是一个开放源码项目, 所以是完全免费的. 用C+语言开发. 符合CORBA2.6版本.支持语言: C+支持平台: Win32, 常见的各种Unix, Linux, 实时操作系统如
2、VxWorks等等. 在所有的CORBA平台中, TAO支持的平台应该是最多的.支持的服务: Naming, Event, Notification, Security, Time,Scheduling, Logging, Lifecycle, Trading, Concurrency, Lifecycle,A/V Streaming, Load balancing等.2. 网上的TAO资源TAO主页: http:/www.cs.wustl.edu/schmidt/TAO.htmlOCI公司宣布对TAO进行技术支持: 它出了一本书叫: TAO Developers Guide, 上下两卷, 1
3、000页左右, 要250美刀. 吐血买了一本.此外, OCI有自己的TAO发布版本, 最新版本号为1.2a. Win32版本开价50美刀.OCI有一个TAO的FAQ, 很不错, 地址:TAO的Mailing List: tao-userscs.wustl.eduMailing List Archive: 3. 下载TAO地址: http:/download.dre.vanderbilt.edu/目前最新的Release版本是1.3发信人: Mentoya (钻研Orbix2000中.), 信区: DOC 标 题: TAO使用指南 - 编译ACE和TAO发信站: BBS 水木清华站 (Thu M
4、ay 8 19:11:37 2003), 转信我只用到Win32平台. 现在使用的环境是: WinXP Professional + MSVC SP5.在Win32平台下, 还可以使用C+ Builder来编译和开发TAO. 我没有用过.:-(参见: http:/www.cs.wustl.edu/schmidt/ACE_wrappers/TAO/TAO-INSTALL.html-TAO完全支持Win32API,(包括Windows NT, Windows 2000, Windows 95/98/ME)VC5.0和VC6.0均可编译。如果要在Borland C+ Builder中编译,请参见有关
5、文档.TAO可以被编译成两种版本:DLL版(动态链接)和LIB版(静态链接)一. Win32+VC6.0下编译和安装ACE和TAO将网上下载的TAO软件包解压缩到某个目录,在该目录下会有ACE_wrappers目录。请按照以下步骤来执行:1. 新建两个环境变量:ACE_ROOTACE_wrappers所在目录;TAO_ROOT=ACE_wrapperstao2. 在ACE_ROOTace目录下建立一个空文件config.h,里面包含一句:i nclude ace/config-win32.h以说明是要在win32平台下进行编译。注: (1) i nclude config-win32.h亦可(
6、2) 最好在i nclude之前加上#define ACE_HAS_STANDARD_CPP_LIBRARY 1 以使用MSVC的STL库.3. 如果是98/ME,则在ACE_ROOTaceconfig.h的最前面加上#define ACE_HAS_WINNT4 0来关掉一些NT/2000中特有的代码。4. 如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件中的i nclude语句前添加下面的行: #define ACE_HAS_STANDARD_CPP_LIBRARY 1注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的
7、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 宏,则
8、ACE 库将被编译成为静态库。如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:ACE_AS_STATIC_LIBS.作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在ACE_ROOTaceconfig.h文件的i nclude语句前添加如下的宏定义 #define ACE_NO_INLINE来禁止内联函数。7. 用VC打开TAO和ACE的工程文件:ACE_ROOTtaotaoace.dsw,开始编译ACE和TAO. 注意ACE和TAO有Debug和Release两个版本. 你在开发自己的程序时,如果是Debug版的程序, 必须链接Debug版的TAO库, 如果是
9、Release版的程序,必须链接Release版的TAO库.(这不废话! 不过你一定会回来和我一起唱这个当当当的) taoace.dsw中包含了许多工程, 工程之间是有依赖关系的. 所以这个工程编译的顺序比较重要. 关于编译的顺序, 下文叙述.每个工程都包含有一些不同的配置:Debug/Release、MFC/Non-MFC、Static/Dynamic等版本。你必须确定你所需要的版本。如,要生成你程序的debug版,则需要debug版的ACE。注意:如果你用动态(DLL)版本的TAO,在开发程序时,需要将ACE_ROOTbin目录添加到你的程序的PATH环境变量中,否则程序会报告找不到动态链
10、接库.8. 编译顺序.TAO中有好多服务可能是你用不到的. 所以编译时没有必要将所有的程序全部编译一遍. 要知道编译TAO还是个艰巨的任务咧.我目前只用到了Naming和Event服务, 并且没有用它的实时CORBA功能. 所以我的编译顺序是:说明 需要编译的工程-核心库 ACE DLL FilesTAO DLL FilesIDL编译器 gperf FilesTAO_IDL_FE_DLL FilesTAO_IDL_BE_DLL FilesTAO_IDL Compiler FilesPOA PortableServer Files名字和事件服务 IORTable FilesSvc Utils F
11、ilesCosNaming FilesNaming_Service FilesMessaging FilesCosEvent FilesCosEvent_Service FilesNT_Naming_Service Files-TAO的主页上有一个可以自动编译所有TAO工程的脚本, 记不得在那里了.9. 编译后得到的文件分散于各目录中:可执行程序和动态链接库文件: $ACE_ROOTbinlib文件: $(ACE_ROOT)ace,$(TAO_ROOT)tao,$(TAO_ROOT)orbsvcsorbsvcs头文件: $(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)or
12、bsvcs10. ACE的DLL和LIB的命名规则:当使用MSVC编译时的命名规则如下:静态库/DLL文件名 + (是静态库吗? s : ) + (是Debug模式的库吗? d : ) + (.dll/.lib)11. 测试TAOTAO的测试代码位于TAO_ROOTtests目录下。有一个vc的工程文件:TAO_tests.dsw来编译所有的测试代码。发信人: Mentoya (钻研Orbix2000中.), 信区: DOC 标 题: TAO使用指南 - 用VC+开发TAO程序发信站: BBS 水木清华站 (Thu May 8 19:34:42 2003), 转信在Microsoft Visu
13、al C+中开发TAO程序时的设置:一. 路径设置1. 首先确认环境变量ACE_ROOT和TAO_ROOT已被正确设置.2. 将(ACE_ROOTbin)添加到PATH环境变量中. 否则会找不到DLL.3. 在Tools-Options-Directories中, 分别添加如下目录:Include files:$(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)orbsvcsLibrary files:$(ACE_ROOT)ace,$(TAO_ROOT)tao,$(TAO_ROOT)orbsvcsorbsvcs4. 也可以在Project-Settings-C/C+-Prep
14、rocessor-Additional include directories中添加头文件的路径.在Project-Settings-Link-Input-Additional library directories中添加静态库文件路径.二. 工程设置1. Project-Settings-C/C+-Code generation:如果工程是Debug版, 选择Debug Multithreaded DLL如果工程是Release版, 选择Multithreaded DLL2. Project-Settings-Link-Input-Object/library modules:需要添加TAO
15、的静态链接库文件:说明 Debug版 Release版-普通客户端: Debug版: ACEd.lib Release版: ACE.lib普通服务器: 在ACE.lib/ACEd.lib的基础上, 还需要添加:Debug版: PortableServerd.libRelease版: PortableServer.lib如果使用了名字服务, 则需要添加 TAO_CosNaming.lib 或TAO_CosNamingd.lib如果使用了事件服务, 则需要添加 TAO_CosEvent.lib 或TAO_CosEventd.lib注意: TAO分Debug和Release版, 所以在开发时, De
16、bug和Release版的设置要严格区分. 即使是MS自己的库也是这样. 如对于Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib. 我就是因为这个原因而使程序出现异常, 导致差点放弃了TAO :-(发信人: Mentoya (钻研Orbix2000中.), 信区: DOC 标 题: TAO使用指南 - 做一个TAO的SDK发信站: BBS 水木清华站 (Thu May 8 19:56:03 2003), 站内TAO的文件众多, 目录结构复杂, 所以生成一个所谓的TAO SDK来方便开发.这个TAO SDK的目录结构如下:TAOSDK_ROOT|- bin (所有的可执行文
17、件和动态链接库)|- idl (ORB的IDL文件)|- include (所有的头文件)| |- ace| | |- *| | |- *| | | |- orbsvcs| | |- CosEvent| | |- Naming| | |- *| | |- *| | | |- tao| | |- IORTable| | |- PortableServer| | |- *|- lib (所有的静态库文件)使用时, 首先创建环境变量 TAOSDK_ROOT 为TAO SDK的根目录, 然后在VC的工程中如下设置:添加头文件的include路径: $(TAOSDK_ROOT)include,$(TAO
18、SDK_ROOT)includeorbsvcs,$(TAOSDK_ROOT)tao添加静态库文件路径:$(TAOSDK_ROOT)lib下面提供了一个自动生成TAO SDK的批处理文件, 将该文件置于ACE_ROOT目录下,然后执行之.注: 本程序来源于TAO的邮件列表.File name: TAOSDK.bat-echo offecho Createing directoriesmkdir .taobinmkdir .taoincludemkdir .taoincludeacemkdir .taoincludeaceclassixmkdir .taoincludeaceqosmkdir .t
19、aoincludeacermcastmkdir .taoincludeacesslmkdir .taoincludetaomkdir .taoincludetaoBiDir_GIOPmkdir .taoincludetaoDomainmkdir .taoincludetaoDynamicAnymkdir .taoincludetaoDynamicInterfacemkdir .taoincludetaoIFR_Clientmkdir .taoincludetaoIORManipulationmkdir .taoincludetaoIORTablemkdir .taoincludetaoPort
20、ableServermkdir .taoincludetaoRTCORBAmkdir .taoincludetaoRTPortableServermkdir .taoincludetaoSmartProxiesmkdir .taoincludetaoStrategiesmkdir .taoincludetaoTypeCodeFactorymkdir .taoincludeorbsvcsmkdir .taoincludeorbsvcs*mkdir .taoincludeorbsvcsConcurrencymkdir .taoincludeorbsvcsCosEventmkdir .taoincl
21、udeorbsvcsESFmkdir .taoincludeorbsvcsETCLmkdir .taoincludeorbsvcsEventmkdir .taoincludeorbsvcsFaultTolerancemkdir .taoincludeorbsvcsLifeCyclemkdir .taoincludeorbsvcsLoadBalancingmkdir .taoincludeorbsvcsLogmkdir .taoincludeorbsvcsNamingmkdir .taoincludeorbsvcsNotifymkdir .taoincludeorbsvcsPropertymkd
22、ir .taoincludeorbsvcsSchedmkdir .taoincludeorbsvcsSecuritymkdir .taoincludeorbsvcsSSLIOPmkdir .taoincludeorbsvcsTimemkdir .taoincludeorbsvcsTradermkdir .taolibecho copying header files.copy ace*.i .taoincludeacecopy ace*.inl .taoincludeacecopy ace*.h .taoincludeacecopy ace*.cpp .taoincludeacecopy ac
23、eclassix*.i .taoincludeaceclassixcopy aceclassix*.h .taoincludeaceclassixcopy aceclassix*.cpp .taoincludeaceclassixcopy aceqos*.i .taoincludeaceqoscopy aceqos*.h .taoincludeaceqoscopy aceqos*.cpp .taoincludeaceqoscopy acermcast*.i .taoincludeacermcastcopy acermcast*.h .taoincludeacermcastcopy acermc
24、ast*.cpp .taoincludeacermcastcopy acessl*.i .taoincludeacesslcopy acessl*.h .taoincludeacesslcopy acessl*.cpp .taoincludeacesslcopy taotao*.i .taoincludetaocopy taotao*.inl .taoincludetaocopy taotao*.h .taoincludetaocopy taotao*.idl .taoincludetaocopy taotao*.cpp .taoincludetaocopy taoorbsvcsNaming_
25、Service*.h .taoincludetaocopy taoorbsvcsLoadBalancer*.h .taoincludetaocopy taoorbsvcsLogging_Service*.h .taoincludetaocopy taoorbsvcsTAO_Service*.h .taoincludetaocopy taoorbsvcsTime_Service*.h .taoincludetaocopy taoorbsvcsNaming_Service*.h .taoincludetaocopy taoorbsvcsTrading_Service*.h .taoincludet
26、aocopy taoorbsvcsImplRepo_Service*.h .taoincludetaocopy taoorbsvcsConcurrency_Service*.h .taoincludetaocopy taoorbsvcsCosEvent_Service*.h .taoincludetaocopy taoorbsvcsDump_Schedule*.h .taoincludetaocopy taoorbsvcsEvent_Service*.h .taoincludetaocopy taoorbsvcsIFR_Service*.h .taoincludetaocopy taoorbs
27、vcsLifeCycle_Service*.h .taoincludetaocopy taoorbsvcsNotify_Service*.h .taoincludetaocopy taoorbsvcsScheduling_Service*.h .taoincludetaocopy taoorbsvcsorbsvcs*.h .taoincludeorbsvcscopy taoorbsvcsorbsvcs*.i .taoincludeorbsvcscopy taoorbsvcsorbsvcs*.cpp .taoincludeorbsvcscopy taoorbsvcsorbsvcs*.h .taoincludeorbsvcs*copy taoorbsvcsorbsvcs*.i .taoincludeorbsvcs*copy taoorbsvcsorbsvcs*.cpp .taoincludeorbsvcs*copy taoorbsvcsorbsvcsConcurrency*.h .taoincludeorbsvcsConcurrencycopy taoorbsvcsorbsvcsConcurrency*.i .taoincludeorbsvcsConcurrencycopy taoorbsvcsorbsvcsConcurrency*.cpp .taoincludeorbsvcsC
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1