1. 將ACE分發包界壓縮到一個目錄中,這將在那個目錄中生成一個包含ACE的目錄ACE_wrappers。接下來的步驟中假設ACE分發包被解壓縮到ACE_ROOT=C:\ACE_wrappers中,因此ACE將會存在于ACE_ROOT\ace目錄中。
2. 在ACE_ROOT\ace目錄中創建一個文件,命名為config.h,其內容為:
#include ace/config-win32.h
3. 在VC++中加載ACE的工程文件(ACE_ROOT\ace\ace.dsw)
4. 每個工程都會包含多個配置,這些配置是Debug/Release, MFC/Non-MFCh和Static/Dynamic庫版本等選項的混合。確定你所需要的構造(例如,調試代碼需要ACE的調試版本)。所有這些不同的配置可以為你提供一些便利,你可以或者采用不同的模式以構造不同配置的應用,或者通過改變ace\config.h來改變在NT上的不同配置。
注意:如果你使用動態連接,請保證ACE_ROOT\bin被添加到你的path環境變量中,否則你將在運行程序的時候碰到尋找ace.dll或者aced.dll的問題。
5. 如果你在Windows NT或者Windows 2k上構建ACE,你可以馬上開始構造她而不需任何改變,如果你在Windows 9x/me上構建,那么你必須在
ACE_ROOT\ace\config.h.的#include塊之前添加一行:
#define ACE_HAS_WINNT4 0
這將在ACE中移掉一些WinNT/Win2K中特有的代碼。
6. 如果你希望使用MSVC自帶的標準C++頭文件(C++ Standard Draft 2種定義的iostream,cstdio…..),則應該在
ACE_ROOT\ace\config.h.的#include塊之前添加一行:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
7. 如果需要和MFC一起使用,增加如下定義到你的config.h文件中,注意,如果你想使用spawn一個新的線程,則必須保證使用THR_USE_AFX標志來spawn線程。
#define ACE_HAS_MFC 1
?? 注:我使用該宏編譯ACE時不能通過,有知道的朋友請賜教。
8. 如果要構建ACE的靜態版本,則需要在config.h中定義ACE_AS_STATIC_LIBS,此宏在那些希望使用ACE的靜態版本的應用工程中也必須定義。
作為一個可選項,你可以在
#include statement in ACE_ROOT\ace\config.h.之前添加一行:
#define ACE_NO_INLINE
來取消函數內聯從而減小靜態庫(和你的運行碼)的大小。
9. ACE DLL和LIB庫的命名規則:
我們使用如下的規則明明使用MSVC的ACE的DLL和LIB文件。
Library/DLL name + (是靜態庫嗎 ? s : ) + (包含調試信息 ? d : ) + {.dll|.lib}
在MSVC環境中使用ACE的更多信息可以在這里找到。
將ACE與VC6集成在一起
一.打開 Tools>Options>Directories
加入以下內容:
Executable file:
C:\ACE_wrappers\bin
Include file:
C:\ACE_wrappers\
Library Files:
C:\ACE_wrappers\ACE
Source Files:
C:\ACE_wrappers\
二.加入 C:\ACE_wrappers\bin 到系統環境變量 path中
在MFC程序中使用時,應該在InitInstance()中添加:
WSDATA wsData;
WORD VerRequested = MAKEWORD(2,2);
WSAStarup(VerRequested,&wsData)