ace源碼
㈠ ACE是什麼化學試劑
化學中ACE是指的丙酮(Acetone)的俗稱
㈡ ace怎麼編譯
ACE是個很有用的開放源代碼的C++網路編程開發包,利用它比直接用API更有利於代碼的健壯性,可移植性,並相對簡單。
估計大家剛接觸ACE時,都有一定難度,說不定就半途放棄了,這是我學ACE兩天中的總結,基本上不成文,但我想研究到ACE的你一定會明白下文的意思。
一、ACE官方主頁: http://www.cs.wustl.e/~schmidt/ACE.html
下載地址: http://deuce.doc.wustl.e/Download.html
Building and Installing ACE:http://www.dre.vanderbilt.e/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html
我下載的是Latest Beta Kit中的ACE.zip(Latest Release中的壓縮包好像有問題,我有WinRAR3.30解壓縮報錯)
二、解壓縮後放在D盤
D:\ACE_wrappers
三、在D:\ACE_wrappers\ace目錄下新建文件config.h加入一行
#include "ace/config-win32.h"
四、編譯:用VC6.0打開D:\ACE_wrappers\ace\ace.dsw
左側顯示 ACE DLL classes
ACE LIB classes
或1、從菜單上選擇「編譯」,「放置可遠行配置」,選擇你需要的工程配置
「編譯」,「重建全部」(或任一,如ACE DLL - Win32 MFC Debug)
此過程可能持續半小時至一個小時不等
或2、從菜單上選擇「編譯」,「批構建」,選擇你需要的工程配置
此過程可能持續二至四個鍾頭
產生的.lib文件位於D:\ACE_wrappers\ace\下,
產生的.dll文件位於D:\ACE_wrappers\bin\下
同樣打開ace_static.dsw
編譯
ACEs.lib
ACEsd.lib
ACE_RMCasts.lib
ACE_RMCastsd.lib
TMCasts.lib
TMCastsd.lib
ACE生成的dll和lib文件的命名規則:(d = debug,s = static)
debug - aced.lib、debug+static - acesd.lib、release - ace.lib、 release+static - aces.lib
五、樣常式序的編譯
用VC打開D:\ACE_wrappers\tests\tests.dsw
「編譯」,「批構建」
六、自寫程序的工程配置
中篇:ACE程序員教程.pdf中的樣常式序:
網址:http://www.cs.wustl.e/~schmidt/ACE_wrappers/docs/tutorials/guide-tutorials.html
將網頁上的原代碼復制到一新建文件,並命名為server.cpp
用VC打開,編譯,重建全部,彈出對話框,「This build command require ...「,點」是「
會出現以下錯誤
如果有「Cannot open include file: 'ace/SOCK_Acceptor.h': No such file or directory」
工程-設置-C/C++: Preprocessor,附加包含路徑:D:/ACE_wrappers
如果有「 You must link against multi-threaded libraries when using ACE (check your project settings)」
工程-設置-C/C++: Code Generation - Use run-time library : Debug Multithreaded Dll
如果有「error C2065: 'ACE_ERROR' : undeclared identifier」
error C2065: 'ACE_DEBUG' : undeclared identifier
#include "ace/Log_Msg.h"
error C4716: 'ace_main_i' : must return a value
在main中加入
return 0;
「error LNK2001: unresolved external symbol "__declspec(dllimport) int __cdecl」
工程-設置-Link-Input: 對象/庫模塊:添加aced.lib 附加庫路徑:D:\ACE_wrappers\ace
編譯client中遇到的問題
1、error C2039: 'sprintf' : is not a member of 'ACE_OS'
#include "ace/OS_NS_stdio.h"
2、error C2039: 'strlen' : is not a member of 'ACE_OS'
#include "ace/OS_NS_string.h"
3、error C2059: syntax error : '?'
錯誤在這一句: ACE_DEBUG((LM_DEBUG,?Usage egX <hostname> <port_number>\n?));
將?改為"
4、無法找到動態鏈接庫aced.dll於指定的路徑
為系統變數PATH加上D:\ACE_wrappers\bin
靜態包含:
工程-設置-C/C++-預處理程序定義中加入 ,ACE_AS_STATIC_LIBS
例1server編譯後生成
server.exe 16K serverd.exe 97K servers.exe 124K serversd.exe 669K
(servers.exe較適合發布)
例2 client編譯後生成
client.exe 16K clientd.exe 97K clients.exe 124K clientsd.exe 669K
(clients.exe較適合發布)
測試 clients 127.0.0.1 1919
servers 1919
下面是馬維達老師寫的:(轉自huihoo)
發表於: 3/31/2003 - 04:24
翻譯的一點小東西,希望能對大家有幫助。
其實也不敢稱為是翻譯的,水平太爛了,大家將就著看吧 :)
使用Microsoft Visual C++ 在win32平台上生成和安裝ACE:
注意:關於MSVC5.0和Service Pack 3的使用有一些問題,過去一些用戶在sp2中使用良好的代碼在sp3種卻會引發一些問題。感謝Bill 的細心查找,這一神秘的問題被解決了。答案?(哦,這兒有一個好答案。。。)這可能是因為有多個版本的sp3較早版本的sp3有一些bug,而後來的版本修正了這些錯誤,從微軟網站上下載的1998年6月16日版本的sp3是一個良好的版本。如果X03-50158是那些擁有sp3的光碟序列號的一部分,那麼這些版本也是良好的。但是不管任何版本的sp3,其STL的實現都有錯誤,詳細情況請瀏覽http://www.dinkumware.com/vc_fixes.html。感謝Ben Eng對這些錯誤的修正。
現在的SP4(希望只有一個版本)已經修正了STL中的死鎖問題。
我們現在將不再積極的支持MSVC 4.X以及以前的版本,ACE可和這些編譯器一起工作但是可能會丟失一些好處。
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工程使用MSVC運行時的動態DLL版本,你也可以選擇使用ACE的不關心運行時庫的靜態(LIB)版本。我們選擇僅與動態運行時庫連接的原因在於基本上所有的NT機器上都會安裝這些庫,而我們則可以因此而減小代碼的大小。如果你希望ACE與MFC的靜態版本連接,則可以在config.h中定義ACE_USES_STATIC_MFC。然而,如果你希望靜態的連接所有的庫(包括MSVC運行時庫),就需要自己修改工程文件了。
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的更多信息可以在這里找到。
-----------------------------------------------------------------------
一、安裝TAO,需要先編譯並安裝ACE。
二、ACE的編譯和安裝步驟見http://www.cs.wustl.e/~schmidt/ACE_wrappers/ACE-INSTALL.html。TAO的編譯和安裝步驟見http://www.cs.wustl.e/~schmidt/ACE_wrappers/TAO/TAO-INSTALL.html。如果你英文程度還可以的話,最好直接閱讀這兩篇文檔。說到底,中文文檔只是「權宜之計」;漢語並不太適合進行邏輯性的表述。
但我還是把其中的一些段落編譯如下(VC 6.0 + ACE-5.2.1 + TAO-1.2.1):
ACE的編譯與安裝
一般規則
ACE中的許多特性可以通過在$ACE_ROOT/ace/config.h中定義一些宏來進行修改。這些宏應該總是在包括針對你的平台的配置文件之前出現。
但是,如果你想要取消/重定義在針對特定平台的配置文件中定義的宏,#undef應該在配置文件之後出現。
如果你計劃在多種平台上編譯ACE,你也許需要考慮克隆源碼樹。
步驟:
1. 將ACE發布文件解壓縮到某個目錄中,在其中將會創建含有所有文件的ACE_wrappers目錄。在下面的步驟中,ACE_wrappers目錄將以ACE_ROOT為名來指稱。
2. 在ACE_ROOT\ace目錄中創建一個名為config.h的文件,在其中包含:
#include 「ace/config-win32.h」
3. 現在載入ACE的項目文件(ACE_ROOT\ace\ace.dsw)。
4. 其中的每個項目都含有若干不同的配置(可混合Debug/Release、MFC/Non-MFC、Static/Dynamic library版本)。你可以從中選擇你所需的配置,或是使用ace/config.h來進行調整。
注意:如果你使用動態鏈接庫,在運行使用ACE的程序時,確定你在PATH中包括了ACE_ROOT\bin。
5. 如果你的系統平台是WinNT或2000,那麼無需任何改動你就可以開始編譯了。如果是Windows 9x/Me,你需要在ACE_ROOT\ace\config.h中的#include語句之前增加:
#define ACE_HAS_WINNT4 0
6. 如果你想要使用MSVC標准C++頭(iostream、cstdio……),在ACE_ROOT\ace\config.h中的#include語句之前增加:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1
7. 要與MFC一起使用ACE,再增加下面的定義:
#define ACE_HAS_MFC 1
注意如果你想要通過CWinThread派生新線程,一定要設置THR_USE_AFX。在預設情況下,所有的ACE項目都使用DLL版本的MSVC運行時庫。盡管如此,你仍然可以選擇使用static(LIB)版本的ACE庫。如果你想要將MFC作為靜態庫鏈接進ACE,你可以在config.h文件中定義ACE_USES_STATIC_MFC。但如果你想要靜態鏈接所有的東西(包括MSVC運行時庫),你就需要自己修改ACE的項目文件。
8. ACE的靜態版本是通過定義ACE_AS_STATIC_LIBS來編譯的。在鏈接靜態ACE庫的應用項目中也應該使用這個宏。
你也可以在config.h文件中增加
#define ACE_NO_INLINE
來取消函數內聯並減小靜態庫(和你的可執行程序)的大小。
9. ACE DLL和LIB的命名方案:
"Library/DLL名" + (是否為靜態庫 ? "s" : "") + (是否啟用了Debugging ? "d" : "") + {".dll"|".lib"}
10. 配置完畢後編譯即可。選擇dll版本,編譯生成的dll文件在ACE_ROOT\bin中,相應的lib文件在ACE_ROOT\ace中。
ACE測試
各測試程序在ACE_ROOT\tests中。在其中也有一個工作空間文件可用來編譯所有的測試程序(tests.dsw)。
一旦你編譯了所有測試程序(可使用批編譯),你可以運行tests目錄中的perl腳本run_test.pl或批處理文件run_tests.bat來進行所有測試。
TAO的編譯與安裝
確定VC的CL.EXE在你的訪問路徑上。設置ACE_ROOT或TAO_ROOT環境變數。例如:
set ACE_ROOT=C:\ACE_wrappers
TAO最好放置在ACE_wrappers(這也是預設情況)。
1.確定ACE已經編譯和安裝。
2.確定ACE_wrappers\bin已在「Tools|Options」中的「Executable Directories」中列出。如果在MSVC下使用TAO_IDL編譯器就需要進行此設置。
3.載入tao\TAO.dsw,並編譯TAO庫。
4.要編譯Cubit測試,載入performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw,並編譯客戶和伺服器。
TAOACE.dsw
TAOACE.dsw是一個Visual C++ 5.0/6.0工作空間文件,它載入的項目包括ACE、TAO、TAO_IDL(編譯器)、gperf、orb服務庫,以及一些單獨的可執行程序(比如Naming Service,等等)。它可以用於編譯所有的用於編譯/運行TAO應用的文件。
三、我選擇編譯的是dll版本(Release),並在ACE的config.h文件中定義了「#define ACE_HAS_STANDARD_CPP_LIBRARY 1」。編譯後我所得到的ace.dll的大小是1.13MB,相應的ace.lib的大小是1.77MB;TAO.dll的大小是1.47MB,相應的TAO.lib的大小是2.74MB。所有文件約有 MB,包括源程序、編譯生成的中間文件,等等,但有些例子及服務我沒有編譯。
祝學有所成!
馬維達
-------------------------------------
將ACE與VC6集成在一起
一.打開 Tools>Options>Directories
加入以下內容:
Executable File:
C:\ACE_wrappers\bin
Include File:
C:\ACE_wrappers\
C:\ACE_wrappers\TAO
C:\ACE_wrappers\TAO\orbsvcs
Library Files:
C:\ACE_wrappers\ace
C:\ACE_wrappers\TAO\tao
C:\ACE_wrappers\TAO\orbsvcs\orbsvcs
Source Files:
C:\ACE_wrappers\ace
C:\ACE_wrappers\TAO\tao
C:\ACE_wrappers\TAO\orbsvcs\orbsvcs
二.加入 C:\ACE_wrappers\bin 到系統環境變數 path中
三.設置系統變數
ACE_ROOT=C:\ACE_wrappers
TAO_ROOT=C:\ACE_wrappers\TAO
㈢ 阿里雲ace上傳好的源碼怎麼刪除
重新部署新的SVN,然後發布新的,吧新源碼上傳上去,舊的就可以刪除了
㈣ 什麼是ACE
ACE全稱adaptive communication enviroment,是一套C++的通信庫。它提供了socket/threading/memory management等多種系統調用的面對對象的wrapper,使C++通信軟體開發更加簡單。
ACE最帥的特點:跨平台!!!!!!ACE屏蔽了底層平台特定的語義,使用ACE編寫的C++程序,可以在linux/windows/HP-Unix下編譯執行,而且效率很高。曾經做過的一個VOIP項目就是用ACE寫的,那個項目的技術相當復雜,需要用到socket/multi-threading等很多與操作系統聯系緊密的技術,但用了ACE(界面用Qt)後,那個項目源碼可以直接在linux和windows下編譯運行,呵呵,還是相當成功的。項目進行中感到ACE相當成熟,舉一個朋友說Siemens的某些大型工程也是用的ACE。而且,ACE是免費開源的軟體包--不用白不用。
C++ Network Programming就是ACE項目的負責人Schmidt寫的,這位老哥以前是華盛頓大學的副教授,主要研究領域是軟體工程(他寫了不少關於pattern的文章和書),現在貓到UC Irvine去了,好象還是副教授(要這哥們在中國,早應該成教授了吧)。這兩本書主要介紹了ACE的使用,也涉及了部份設計方面的內容。第一卷主要介紹ACE的基本功能和使用,第二卷則偏重通訊軟體中的design pattern。搞通信軟體開發的兄弟們絕對應該看看此書。
另外也有人推薦把ACE作為學習C++的範例來學習,呵呵,這就是個人喜好的問題了...總的來說ACE的代碼風格還是很不錯的--比STL那些天書好看些,呵呵。
ACE的竹葉:http://www.cs.wustl.e/~schmidt/ACE.html
㈤ ACE的C++
Adaptive Communication Environment(自適配通信環境),簡稱ACE。為一個以C++的Template技術所做成的開放源代碼的可跨平台的網路應用程序的程序庫套件。它提供了socket/threading/memory management等多種系統調用的面對對象的wrapper,使C++通信軟體開發更加簡單。
官方網站
The ADAPTIVE Communication Environment (ACE)
相關書籍
The ACE Programmer's Guide,ISBN 0-201-69971-0
C++ Network Programming
Mastering Complexity Using ACE and Patterns,ISBN 0-201-60464-7
Systematic Reuse with ACE and Frameworks,ISBN 0-201-79525-6
《C++ Network Programming》就是ACE項目的負責人Schmidt寫的,這位老哥以前是華盛頓大學的副教授,主要研究領域是軟體工程(他寫了不少關於pattern的文章和書),這兩本書主要介紹了ACE的使用,也涉及了部份設計方面的內容。第一卷主要介紹ACE的基本功能和使用,第二卷則偏重通訊軟體中的design pattern。搞通信軟體開發的兄弟們絕對應該看看此書。另外也有人推薦把ACE作為學習C++的範例來學習,呵呵,這就是個人喜好的問題了...總的來說ACE的代碼風格還是很不錯的--比STL那些天書好看些。
討論區
ACE 開發者 ACE
相關下載
Downloading Freely Available Versions of ACE, TAO, and CIAO
ACE+TAO RPM Packages
ACE自適配通信環境(ADAPTIVE Communication Environment)是可自由使用、開放源碼的面向對象(OO)框架(framework),它實現了許多用於並發通信軟體的核心模式。ACE提供了一組豐富的可重用C++包裝外觀(wrapper facade)和框架組件,可跨多種平台完成通用的通信軟體任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分布式服務動態(重)配置、並發執行和同步等等。
ACE的目標用戶是高性能和實時通信服務和應用的開發者。它簡化了使用進程間通信、事件多路分離、顯式動態鏈接和並發的OO網路應用和服務的開發。此外,通過服務在運行時與應用的動態鏈接,ACE使系統的配置和重配置得以自動化。
ACE正在進行持續的改進。Riverace公司採用開放源碼商業模式對ACE進行商業支持。此外,ACE開發組的許多成員正在進行The ACE ORB(TAO)的開發工作。
㈥ 如何在linux編譯和使用ACE
一:下載源碼
http://download.dre.vanderbilt.e/
目前最新版本6.1.2。如果只使用ACE,可以選擇選擇ACE only (tar+gzip format)。
二:編譯
2.1 設置環境變數
在當前用戶目錄下,找到.bash_profile(centos版本)文件或.profile(ubuntu版本)文件,在該文件末尾增加內容:
export PATH
export ACE_ROOT=/home/yleesun/3rd/ACE_wrappers
export LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:$LD_LIBRARY_PATH
具體ACE_ROOT的路徑,根據實際情況修改。
2.2 執行編譯命令
在$ACE_ROOT/ace目錄下運行命令:
ln -s config-linux.h config.h
在$ACE_ROOT/include/makeinclude目錄下執行命令:
ln -s platform_linux.GNU platform_macros.GNU
回到目錄$ACE_ROOT下,執行命令:make
大概20分鍾左右編譯完成。
三:使用ACE編程
ACE庫編譯完成,下面寫個程序試試。
#include <ace/Log_Msg.h>
#include <ace/OS_main.h>
using namespace std;
int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
ACE_DEBUG((LM_DEBUG, ACE_TEXT(「Hello World!」)));
return 0;
}
該文件命名為acetest.cpp
執行下面命令進行編譯:
g++ -I$ACE_ROOT -lACE -L$ACE_ROOT/lib -o acetest acetest.cpp
編譯成功,運行:
./acetest
列印出:Hello World!
注意:g++ 命令後面到參數
-I$ACE_ROOT // 指定包含到頭文件路徑,此處是大寫的 I ,include 的第一個字母到大寫。
-lACE // 指定包含到庫名稱,此處是小寫的 l,library 的第一個字母到小寫。
-L$ACE_ROOT/lib // 指定依賴庫到路徑,此處是大寫到L,library 的第一個字母到大寫。
㈦ ACE是指什麼
哦,是被褥的牌子呀
㈧ 【ace.js】基於JS的代碼帶高亮編輯器
源碼:
ace.js - https://link.jianshu.com/?t=https://github.com/ajaxorg/ace-builds.git
官網及API:
ace.js - https://link.jianshu.com/?t=https://github.com/ajaxorg/ace
所支持的功能,在官方提供的demo里都有,具體的設置參數可翻看API。
㈨ 網上的那個夢幻古龍的源碼,怎麼編譯,最好能詳細墊
ACE是個很有用的開放源代碼的C++網路編程開發包,利用它比直接用API更有利於代碼的健壯性,可移植性,並相對簡單。估計大家剛接觸ACE時,都有一定難度,說不定就半途放棄了,這是我學ACE兩天中的總結,基本上不成文,但我想研究到ACE的你一定會明白下文的意思。一、ACE官方主頁:我下載的是LatestBetaKit中的ACE.zip(LatestRelease中的壓縮包好像有問題,我有WinRAR3.30解壓縮報錯)二、解壓縮後放在D盤D:\ACE_wrappers三、在D:\ACE_wrappers\ace目錄下新建文件config.h加入一行#include"ace/config-win32.h"四、編譯:用VC6.0打開D:\ACE_wrappers\ace\ace.dsw左側顯示ACEDLLclassesACELIBclasses或1、從菜單上選擇「編譯」,「放置可遠行配置」,選擇你需要的工程配置「編譯」,「重建全部」(或任一,如ACEDLL-Win32MFCDebug)此過程可能持續半小時至一個小時不等或2、從菜單上選擇「編譯」,「批構建」,選擇你需要的工程配置此過程可能持續二至四個鍾頭產生的.lib文件位於D:\ACE_wrappers\ace\下,產生的.dll文件位於D:\ACE_wrappers\bin\下同樣打開ace_static.dsw編譯ACEs.libACEsd.libACE_RMCasts.libACE_RMCastsd.libTMCasts.libTMCastsd.libACE生成的dll和lib文件的命名規則:(d=debug,s=static)debug-aced.lib、debug+static-acesd.lib、release-ace.lib、release+static-aces.lib五、樣常式序的編譯用VC打開D:\ACE_wrappers\tests\tests.dsw「編譯」,「批構建」六、自寫程序的工程配置中篇:ACE程序員教程.pdf中的樣常式序:網址:將網頁上的原代碼復制到一新建文件,並命名為server.cpp用VC打開,編譯,重建全部,彈出對話框,「Thisbuildcommandrequire「,點」是「會出現以下錯誤如果有「Cannotopenincludefile:'ace/SOCK_Acceptor.h':Nosuchfileordirectory」工程-設置-C/C++:Preprocessor,附加包含路徑:D:/ACE_wrappers如果有「Youmustlinkagainstmulti-threadedlibrarieswhenusingACE(checkyourprojectsettings)」工程-設置-C/C++:CodeGeneration-Userun-timelibrary:DebugMultithreadedDll如果有「errorC2065:'ACE_ERROR':undeclaredidentifier」errorC2065:'ACE_DEBUG':undeclaredidentifier#include"ace/Log_Msg.h"errorC4716:'ace_main_i':mustreturnavalue在main中加入return0;「errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)int__cdecl」工程-設置-Link-Input:對象/庫模塊:添加aced.lib附加庫路徑:D:\ACE_wrappers\ace編譯client中遇到的問題1、errorC2039:'sprintf':isnotamemberof'ACE_OS'#include"ace/OS_NS_stdio.h"2、errorC2039:'strlen':isnotamemberof'ACE_OS'#include"ace/OS_NS_string.h"3、errorC2059:syntaxerror:'?'錯誤在這一句:ACE_DEBUG((LM_DEBUG,?UsageegX\n?));將?改為"4、無法找到動態鏈接庫aced.dll於指定的路徑為系統變數PATH加上D:\ACE_wrappers\bin靜態包含:工程-設置-C/C++-預處理程序定義中加入,ACE_AS_STATIC_LIBS例1server編譯後生成server.exe16Kserverd.exe97Kservers.exe124Kserversd.exe669K(servers.exe較適合發布)例2client編譯後生成client.exe16Kclientd.exe97Kclients.exe124Kclientsd.exe669K(clients.exe較適合發布)測試clients127.0.0.11919servers1919下面是馬維達老師寫的:(轉自huihoo)發表於:3/31/2003-04:24翻譯的一點小東西,希望能對大家有幫助。其實也不敢稱為是翻譯的,水平太爛了,大家將就著看吧:)使用MicrosoftVisualC++在win32平台上生成和安裝ACE:注意:關於MSVC5.0和ServicePack3的使用有一些問題,過去一些用戶在sp2中使用良好的代碼在sp3種卻會引發一些問題。感謝Bill的細心查找,這一神秘的問題被解決了。答案?(哦,這兒有一個好答案。。。)這可能是因為有多個版本的sp3較早版本的sp3有一些bug,而後來的版本修正了這些錯誤,從微軟網站上下載的1998年6月16日版本的sp3是一個良好的版本。如果X03-50158是那些擁有sp3的光碟序列號的一部分,那麼這些版本也是良好的。但是不管任何版本的sp3,其STL的實現都有錯誤,詳細情況請瀏覽。感謝BenEng對這些錯誤的修正。現在的SP4(希望只有一個版本)已經修正了STL中的死鎖問題。我們現在將不再積極的支持MSVC4.X以及以前的版本,ACE可和這些編譯器一起工作但是可能會丟失一些好處。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.如果你在WindowsNT或者Windows2k上構建ACE,你可以馬上開始構造她而不需任何改變,如果你在Windows9x/me上構建,那麼你必須在ACE_ROOT\ace\config.h.的#include塊之前添加一行:#defineACE_HAS_WINNT40這將在ACE中移掉一些WinNT/Win2K中特有的代碼。6.如果你希望使用MSVC自帶的標准C++頭文件(C++StandardDraft2種定義的iostream,cstdio…..),則應該在ACE_ROOT\ace\config.h.的#include塊之前添加一行:#defineACE_HAS_STANDARD_CPP_LIBRARY17.如果需要和MFC一起使用,增加如下定義到你的config.h文件中,注意,如果你想使用spawn一個新的線程,則必須保證使用THR_USE_AFX標志來spawn線程。#defineACE_HAS_MFC1預設的,ACE工程使用MSVC運行時的動態DLL版本,你也可以選擇使用ACE的不關心運行時庫的靜態(LIB)版本。我們選擇僅與動態運行時庫連接的原因在於基本上所有的NT機器上都會安裝這些庫,而我們則可以因此而減小代碼的大小。如果你希望ACE與MFC的靜態版本連接,則可以在config.h中定義ACE_USES_STATIC_MFC。然而,如果你希望靜態的連接所有的庫(包括MSVC運行時庫),就需要自己修改工程文件了。8.如果要構建ACE的靜態版本,則需要在config.h中定義ACE_AS_STATIC_LIBS,此宏在那些希望使用ACE的靜態版本的應用工程中也必須定義。作為一個可選項,你可以在#includestatementinACE_ROOT\ace\config.h.之前添加一行:#defineACE_NO_INLINE來取消函數內聯從而減小靜態庫(和你的運行碼)的大小。9.ACEDLL和LIB庫的命名規則:我們使用如下的規則明明使用MSVC的ACE的DLL和LIB文件。"Library/DLLname"+(是靜態庫嗎?"s":"")+(包含調試信息?"d":"")+{".dll"|".lib"}在MSVC環境中使用ACE的信息可以在這里找到。-----------------------------------------------------------------------一、安裝TAO,需要先編譯並安裝ACE。二、ACE的編譯和安裝步驟見。如果你英文程度還可以的話,最好直接閱讀這兩篇文檔。說到底,中文文檔只是「權宜之計」;漢語並不太適合進行邏輯性的表述。但我還是把其中的一些段落編譯如下(VC6.0+ACE-5.2.1+TAO-1.2.1):ACE的編譯與安裝一般規則ACE中的許多特性可以通過在$ACE_ROOT/ace/config.h中定義一些宏來進行修改。這些宏應該總是在包括針對你的平台的配置文件之前出現。但是,如果你想要取消/重定義在針對特定平台的配置文件中定義的宏,#undef應該在配置文件之後出現。如果你計劃在多種平台上編譯ACE,你也許需要考慮克隆源碼樹。步驟:1.將ACE發布文件解壓縮到某個目錄中,在其中將會創建含有所有文件的ACE_wrappers目錄。在下面的步驟中,ACE_wrappers目錄將以ACE_ROOT為名來指稱。2.在ACE_ROOT\ace目錄中創建一個名為config.h的文件,在其中包含:#include「ace/config-win32.h」3.現在載入ACE的項目文件(ACE_ROOT\ace\ace.dsw)。4.其中的每個項目都含有若干不同的配置(可混合Debug/Release、MFC/Non-MFC、Static/Dynamiclibrary版本)。你可以從中選擇你所需的配置,或是使用ace/config.h來進行調整。注意:如果你使用動態鏈接庫,在運行使用ACE的程序時,確定你在PATH中包括了ACE_ROOT\bin。5.如果你的系統平台是WinNT或2000,那麼無需任何改動你就可以開始編譯了。如果是Windows9x/Me,你需要在ACE_ROOT\ace\config.h中的#include語句之前增加:#defineACE_HAS_WINNT406.如果你想要使用MSVC標准C++頭(iostream、cstdio……),在ACE_ROOT\ace\config.h中的#include語句之前增加:#defineACE_HAS_STANDARD_CPP_LIBRARY17.要與MFC一起使用ACE,再增加下面的定義:#defineACE_HAS_MFC1注意如果你想要通過CWinThread派生新線程,一定要設置THR_USE_AFX。在預設情況下,所有的ACE項目都使用DLL版本的MSVC運行時庫。盡管如此,你仍然可以選擇使用static(LIB)版本的ACE庫。如果你想要將MFC作為靜態庫鏈接進ACE,你可以在config.h文件中定義ACE_USES_STATIC_MFC。但如果你想要靜態鏈接所有的東西(包括MSVC運行時庫),你就需要自己修改ACE的項目文件。8.ACE的靜態版本是通過定義ACE_AS_STATIC_LIBS來編譯的。在鏈接靜態ACE庫的應用項目中也應該使用這個宏。你也可以在config.h文件中增加#defineACE_NO_INLINE來取消函數內聯並減小靜態庫(和你的可執行程序)的大小。9.ACEDLL和LIB的命名方案:"Library/DLL名"+(是否為靜態庫?"s":"")+(是否啟用了Debugging?"d":"")+{".dll"|".lib"}10.配置完畢後編譯即可。選擇dll版本,編譯生成的dll文件在ACE_ROOT\bin中,相應的lib文件在ACE_ROOT\ace中。ACE測試各測試程序在ACE_ROOT\tests中。在其中也有一個工作空間文件可用來編譯所有的測試程序(tests.dsw)。一旦你編譯了所有測試程序(可使用批編譯),你可以運行tests目錄中的perl腳本run_test.pl或批處理文件run_tests.bat來進行所有測試。TAO的編譯與安裝確定VC的CL.EXE在你的訪問路徑上。設置ACE_ROOT或TAO_ROOT環境變數。例如:setACE_ROOT=C:\ACE_wrappersTAO最好放置在ACE_wrappers(這也是預設情況)。1.確定ACE已經編譯和安裝。2.確定ACE_wrappers\bin已在「Tools|Options」中的「ExecutableDirectories」中列出。如果在MSVC下使用TAO_IDL編譯器就需要進行此設置。3.載入tao\TAO.dsw,並編譯TAO庫。4.要編譯Cubit測試,載入performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw,並編譯客戶和伺服器。TAOACE.dswTAOACE.dsw是一個VisualC++5.0/6.0工作空間文件,它載入的項目包括ACE、TAO、TAO_IDL(編譯器)、gperf、orb服務庫,以及一些單獨的可執行程序(比如NamingService,等等)。它可以用於編譯所有的用於編譯/運行TAO應用的文件。三、我選擇編譯的是dll版本(Release),並在ACE的config.h文件中定義了「#defineACE_HAS_STANDARD_CPP_LIBRARY1」。編譯後我所得到的ace.dll的大小是1.13MB,相應的ace.lib的大小是1.77MB;TAO.dll的大小是1.47MB,相應的TAO.lib的大小是2.74MB。所有文件約有MB,包括源程序、編譯生成的中間文件,等等,但有些例子及服務我沒有編譯。祝學有所成!馬維達-------------------------------------將ACE與VC6集成在一起一.打開Tools>Options>Directories加入以下內容:ExecutableFile:C:\ACE_wrappers\binIncludeFile:C:\ACE_wrappers\C:\ACE_wrappers\TAOC:\ACE_wrappers\TAO\orbsvcsLibraryFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcsSourceFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcs二.加入C:\ACE_wrappers\bin到系統環境變數path中三.設置系統變數ACE_ROOT=C:\ACE_wrappersTAO_ROOT=C:\ACE_wrappers\TAO
㈩ ACE什麼意思求解!
ACE一詞原出自於法語,意指「傑出之人」。可譯為「頂尖」「王牌」或「傑作」,作片語用時包含有「頂尖,很好,非常棒」等意思,作縮寫時只是為了稱呼簡便,書寫簡便。