天天看點

TAO使用指南(VS2008)

1、從官網下載下傳最新的版本,位址是: http://download.dre.vanderbilt.edu/ ,本實驗系統下載下傳的版本是ACE+TAO-5.6.7.zip,在windows XP作業系統上,使用VS2008進行編譯。

2、解壓下載下傳的ACE+TAO-5.6.7.zip,本實驗系統放在E盤上,即E:/ACE_wrappers。在該檔案夾下,有ace的安裝向導檔案ACE-INSTALL.html在E:/ACE_wrappers/TAO檔案夾下有TAO的安裝向導檔案TAO-INSTALL.html。

3、設定環境變量:

3.1、在“我的電腦”屬性中找到“進階”選項下的環境變量設定按鈕,開始進行設定。

本實驗系統設定如下兩個變量:

ACE_ROOT  E:/ACE_wrappers

TAO_Root  E:/ACE_wrappers/TAO

3.2、為了便于今後使用ACE/TAO,應當将%ACE_ROOT%/bin(部分通用工具的輸出目錄)

%ACE_ROOT%/lib(所有.lib、.dll檔案的輸出目錄)添加到PATH環境變量中。

4、在%ACE_ROOT%/ace目錄下添加一個檔案config.h,并在其中添加如下内容:

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

#define ACE_HAS_MFC 1

#include "ace/config-win32.h"

具體方法見ACE Installation Guide,這裡是一部分解釋:

4.1、#include "ace/config-win32.h"

以說明是要在win32平台下進行編譯。

注: #include "config-win32.h"亦可

4.2、如果是98/ME,則在ACE_ROOT/ace/config.h的最前面加上

#define ACE_HAS_WINNT4 0

來關掉一些NT/2000中特有的代碼。

4.3、如果你想用MSVC的STL庫 (如iostream, cstdio等), 則在config.h檔案

中的#include語句前添加下面的行:

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

注: 推薦使用該編譯開關. 否則對新手而言, 在自己的工程中使用MSVC的STL庫時會有一些小麻煩.

4.4、如果在ACE中要使用MFC的庫,則需要在config.h中添加:

#define ACE_HAS_MFC 1

4.5、在預設情況下,所有的ACE工程使用的是MSVC的DLL檔案作為運作時庫。你可以選擇使用ACE的靜态庫檔案(LIB)而不需考慮這些運作時庫。選擇動态連結的原因是所有的NT都會包含這些dll檔案(節省空間). 如果你想使用MFC的靜态庫版本,則需要在config.h中加入以下的宏定義:

#define ACE_USES_STATIC_MFC 1

你也可以全部使用靜态庫,這需要你在ACE的工程檔案中自己設定。

4.6. 如果定義了ACE_AS_STATIC_LIBS 宏,則ACE 庫将被編譯成為靜态庫。如果你的程式要靜态連結ACE的靜态庫,則在你的工程中也要定義這個宏:

ACE_AS_STATIC_LIBS.

作為可選項,為了減小靜态庫檔案和你的可執行程式的大小,你可以在ACE_ROOT/ace/config.h檔案的#include語句前添加如下的宏定義#define ACE_NO_INLINE來禁止内聯函數。

4.7、 若是在其它平台上進行編譯,還需要添加檔案:

$ACE_ROOT/include/makeinclude/platform_macros.GNU

5、選擇Tools -> Options -> Projects and Solutions -> VC++ Directories,添加如下編譯器環境變量:

Executable files:

$(ACE_ROOT)/bin

$(CIAO_ROOT)/bin

Include files:

$(ACE_ROOT)

$(TAO_ROOT)

$(TAO_ROOT)/orbsvcs

$(CIAO_ROOT)

$(CIAO_ROOT)/ciao

Library files:

$(ACE_ROOT)/lib

 6、下面對Tao進行編譯

本實驗系統是選擇打開E:/ACE_wrappers/TAO檔案夾下的TAO_ACE_vc9.sln,首先是對ACE進行編譯,然後是對TAO進行編譯,因為是應用TAO進行CORBA應用開發,下面的幾個工程是必須的:

6.1、TAO_IDL_EXE(即tao_idl,也就是我們的idl編譯器,自然少不了,并且後續工程也需

要用到該編譯器。該工程依賴于ACE、TAO_IDL_BE、TAO_IDL_FE、gperf等多個工程,編

TAO_IDL_EXE是會自動先編譯這幾個工程),該程式在編譯TAO時已自動編譯。

6.2、PortableServer(即POA庫,編寫CORBA應用程式哪能離得開POA,該工程依賴于ACE、

TAO、CodeSet、AnyTypeCode等工程)

6.3、Naming_Service(即命名服務,這是對于我們開發CORBA應用相當有用的一個基本服

務,該工程依賴的其它工程就更多了,就不再一一列舉了)

6.4、由于工程之間存在的複雜依賴關系,你隻需編譯最後這三個工程,就可以自動完成約30個工程的編譯工作。編譯完以上工程後,你的%ACE_ROOT%/lib和%ACE_ROOT%/bin下會多出來一些.lib、.dll和.exe檔案。作為一個ORB服務,Name_Service.exe被放在其對應的子目錄%TAO_ROOT%/orbsvcs/Name_Service下。

附錄:

在google上搜尋TAO使用指南,大緻有一個原創來源于水木清華的在VC6.0下編譯的方法,還有一個是CORBA Programming with TAO中的在VS2005中編譯的方法,此文章沒有找到最開始的來源,不過網上有很多轉載,還有一個參考就是從官網下載下傳下來ACE和TAO,它會帶有一個安裝的指南,本實驗系統就是基本參考這三種方式進行的安裝,編譯。因為不同版本之間會有一些略微的不同,下面的内容就是有一些不同點或者是在開發過程中謀篇文章指出的注意要點.

一. 路徑設定

1. 首先确認環境變量ACE_ROOT和TAO_ROOT已被正确設定.

2. 将(ACE_ROOT/bin)添加到PATH環境變量中. 否則會找不到DLL.

3. 在Tools->Options->Directories中, 分别添加如下目錄:

Include files:

$(ACE_ROOT),$(TAO_ROOT),$(TAO_ROOT)/orbsvcs

Library files:

$(ACE_ROOT)/ace,$(TAO_ROOT)/tao,$(TAO_ROOT)/orbsvcs/orbsvcs

4. 也可以在Project->Settings->C/C++->Preprocessor->Additional include directories中添加頭檔案的路徑.在Project->Settings->Link->Input->Additional library directories中添加靜态庫檔案路徑.

二. 工程設定

1. Project->Settings->C/C++->Code generation:

如果工程是Debug版, 選擇Debug Multithreaded DLL

如果工程是Release版, 選擇Multithreaded DLL

2. Project->Settings->Link->Input->Object/library modules:

需要添加TAO的靜态連結庫檔案:

說明 Debug版 Release版

---------------------------------------------

普通用戶端: Debug版: ACEd.lib

Release版: ACE.lib

普通伺服器: 在ACE.lib/ACEd.lib的基礎上, 還需要添加:

Debug版: PortableServerd.lib

Release版: PortableServer.lib

如果使用了名字服務, 則需要添加 TAO_CosNaming.lib 或

TAO_CosNamingd.lib

如果使用了事件服務, 則需要添加 TAO_CosEvent.lib 或

TAO_CosEventd.lib

注意: TAO分Debug和Release版, 是以在開發時, Debug和Release版的設定要嚴格區分. 即使是MS自己的庫也是這樣. 如對于Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib.

三、編譯順序.

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

----------------------------------------

四、 編譯後得到的檔案分散于各目錄中:

可執行程式和動态連結庫檔案:

$ACE_ROOT/bin

lib檔案:

$(ACE_ROOT)/ace,

$(TAO_ROOT)/tao,

$(TAO_ROOT)/orbsvcs/orbsvcs

頭檔案: $(ACE_ROOT),

$(TAO_ROOT),

$(TAO_ROOT)/orbsvcs

五、目錄結構及SDK

TAO的檔案衆多, 目錄結構複雜, 是以生成一個所謂的TAO SDK來友善開發.

這個TAO SDK的目錄結構如下:

TAOSDK_ROOT

|

|-- bin (所有的可執行檔案和動态連結庫)

|-- idl (ORB的IDL檔案)

|-- include (所有的頭檔案)

| |-- ace

| | |-- ***

| | |-- ***

| |

| |-- orbsvcs

| | |-- CosEvent

| | |-- Naming

| | |-- ***

| | |-- ***

| |

| |-- tao

| | |-- IORTable

| | |-- PortableServer

| | |-- ***

|-- lib (所有的靜态庫檔案)

使用時, 首先建立環境變量 TAOSDK_ROOT 為TAO SDK的根目錄, 然後在VC的工程中如下設定:

添加頭檔案的include路徑:

$(TAOSDK_ROOT)/include,$(TAOSDK_ROOT)/include/orbsvcs,$(TAOSDK_ROOT)/tao

添加靜态庫檔案路徑:

$(TAOSDK_ROOT)/lib

參考:

1.       Building and Installing ACE.

http://www.cs.wustl.edu/~schmidt/ACE-install.html

2.       Building and Installing TAO. http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/TAO-INSTALL.html

3.       TAO使用指南[zt from smth]

http://www.huihoo.org/ace_tao/tao_guide.html

4.       CORBA Programming with TAO - 2.Compile Source Code(編譯ACE/TAO/CIAO)

http://blog.csdn.net/billdavid/archive/2006/05/12/726319.aspx

繼續閱讀