使用的環境是: 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檔案運用於 原來的兩個集合之一,從而得到另乙個集合。舉...