TAO使用指南 編譯ACE和TAO

2021-09-30 02:46:42 字數 2845 閱讀 3005

使用的環境是: winxp professional + msvc sp5

tao完全支援win32api,(包括windows nt, windows 2000, windows 95/98/me)vc5.0和vc6.0均可編譯。

一. win32+vc6.0下編譯和安裝ace和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.**件

中的#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.**件的#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來編譯所有的測試**。

TAO使用指南 用VC 開發TAO程式

在microsoft visual c 中開發tao程式時的設定 一.路徑設定 1.首先確認環境變數ace root和tao root已被正確設定.2.將 ace root bin 新增到path環境變數中.否則會找不到dll.3.在tools options directories中,分別新增如下...

diff和patch使用指南

diff和patch是一對工具,在數學上來說,diff是對兩個集合的差運算,patch是對兩個集合的和運算。diff比較兩個檔案或檔案集合的差異,並記錄下來,生成乙個diff檔案,這也是我們常說的patch檔案,即補丁檔案。patch能將diff檔案運用於 原來的兩個集合之一,從而得到另乙個集合。舉...

diff和patch使用指南

diff和patch是一對工具,在數學上來說,diff是對兩個集合的差運算,patch是對兩個集合的和運算。diff比較兩個檔案或檔案集合的差異,並記錄下來,生成乙個diff檔案,這也是我們常說的patch檔案,即補丁檔案。patch能將diff檔案運用於 原來的兩個集合之一,從而得到另乙個集合。舉...