vc8 ACE5 5 安裝心得

2021-05-26 22:56:18 字數 3811 閱讀 2325

網上的一些文章對於ace的安裝很詳細,但也很千篇一律。實踐中你會遇到很多問題,但網上解決辦法比較少。為此寫了這篇文章,分享之。

由於vc6.0對c++標準支援的不好,所以編譯ace,雖然不會報錯,但編譯出來的dll,lib使用會出現stl的問題,所以第二次編譯我選擇了vc8,推薦使用。

#include "ace/config-win32.h"  

#define ace_has_standard_cpp_library 1

2.  開啟ide, tools->options->projects andd solutions->vc++ directories  

然後就可以寫測試程式了,可能出現問題:無法解析的外部符號 "__declspec(dllimport) int __cdecl   ace::init(void)" (__imp_?init@ace@@yahxz),該符號在函式 _main 中被引用。

至於環境變數,已經不需要了。

3.進入ace_root/ace目錄中,直接開啟ace_vc8.sln,直接生成ace專案的debug版和release版,編譯過程大概需要幾分鐘。完成後,在%ace_root%/lib中能找到以下四個檔案,分別是」ace.dll」,」ace.lib」,」aced.dll」,」aced.lib」,其中帶」d」的表示的是debug版本。

在前頭加上:

#ifdef _debug

#pragma comment(lib,"aced.lib")

#else

#pragma comment(lib,"ace.lib")

#endif

這樣 可解決類似問題。這樣的話我又測試了幾個程式,均編譯通過。至於一些vc6會出現的問題,這裡不做解答。但我會時時更新vc8出現的問題以及解決方案。希望關注。。。

the adaptive communication environment (ace) 是一套免費的、開源的物件導向框架,它為大規模併發通訊軟體實現了許多核心的設計模式。ace提供了一套豐富的、可重用的c++封裝類和框架元件,並且可以跨平台實現大多數常見的通訊軟體的功能。本文將通過幾個非常簡單,並且可以說是粗糙的小例子,為大家講述ace的安裝及配置過程。通過這些簡單的小例子,帶領大家以最快的速度進入ace的世界。我們第一步的目的就是不求完美,但求入門。

首先我要先介紹一下本文所使用的環境,以後本文所提到的所有細節都要和這個環境相匹配,如果大家在安裝配置時遇到問題,也可以用qq(21807822) 或blog(和我聯絡。我使用的是aix 5.3 windows xp home ace 5.5 visual studio.net 2003 如果環境不完全匹配,則安裝過程會有少許的不同。

我們先以windows平台為例說明。用winzip解壓ace-5.5.zip,硬碟最好保留2g以上的空間。我保留的是8個g(畢竟還要幹別的嘛),解壓後的目錄類似

ace_root的目錄,你應該根據自已的系統進行修改。aix下使用的makefile檔案內容如下:

all: test1

test1:test1.o

xlc_r -o test1 test1.o -l$/build/ace/.libs/ -lace

test1.o:test1.cpp

xlc_r -c -o test1.o -i$ test1.cpp

clean:

rm -f test1 *.o

// fuzz: disable check_for_streams_include

#include "ace/streams.h"

#if defined (ace_win32) && (!defined (ace_has_standard_cpp_library) || /

(ace_has_standard_cpp_library == 0) || /

defined (ace_uses_old_iostreams))

# include

#else

# include

#endif

iresult = iaserver.set(nport, pserverhost);

if (iresult == -1)

ace_error_return ((lm_error, "lookup %s, %p/n", pserverhost, nport), 1);

if ( scconnector.connect(ssstream, iaserver) < 0 )

ace_error_return ((lm_error, "%p/n", "connect()"), 1);

strcpy(szbuffer, ptext) ;

ssstream.send_n(szbuffer, strlen(ptext)) ;

memset(szbuffer, 0, sizeof(szbuffer)) ;

iresult = ssstream.recv_n(szbuffer, 1024) ;

nlength = strlen(szbuffer) ;

ace::write_n(ace_stdout, "recv --> " , 9) ;

ace::write_n(ace_stdout, szbuffer, nlength) ;

ace::write_n(ace_stdout, "/n", 1) ;

return 0 ;

}#include "ace/streams.h"

int displaytime(char* ptime) ;

int main(int argc, char *argv)

while(server.accept(stream)!=-1)

server.close();

return 0;

}int displaytime(char* ptime)

在aix上安裝,要先設定ace_root,方法在上面的setenv.sh裡有語句。

第二步也和windows一樣要生成config.h。我們使用的是aix 5.3,所以我是要在config.h裡包含config-aix-5.x.h檔案即可

第三步進入$/include/makeinclude目錄,建立乙個名為platform_macros.gnu的檔案,在其中包含如下一行

include $(ace_root)/include/makeinclude/platform_aix.gnu,另外還有乙個方法是用ln -s platform_aix.gnu platform_macros.gnu

下一步,我們在$目錄裡新建乙個目錄 build。然後cd build。在build目錄裡執行 ../configure,等待一段時間之後,我們再make一下就可以生成ace了

在aix上的安裝過程就到這裡了,下一步,你可以用上面的setenv.sh來初始化環境變數,其實也就是指定ace_root和ld_library_path兩個目錄。

2、在$/ace目錄裡,新建config.h,加入#include "config-aix-5.x.h"語句。

或者不願意生成檔案就用 ln -s config-aix-5.x.h config.h

3、在$/include/makeinclude目錄,新建platform_macros.gnu,加入include $(ace_root)/include/makeinclude/platform_aix.gnu

當然你也可以用ln -s platform_aix.gnu platform_macros.gnu 來做到相同的效果

4、在$裡新建乙個目錄 build

5、在build裡敲 ../configure (注意,要有兩個點)

6、configure成功之後,再make,就大功告成。

7、測試,按上文說法設定ld_library_path,再用上面的源**和makefile嘗試編譯,鏈結,執行吧。

ACE服務端程式設計5 ACE日誌輸出和跟蹤

伺服器程式經常需要在命令列中顯示錯誤訊息 狀態或者用來跟蹤程式的執行路徑,最簡單的方法是使用printf。ace提供了更強大日誌設施 1 可以在編譯時啟用或禁用巨集 2 可以動態的啟用或禁用巨集 3 支援日誌嚴重級別 4 支援日誌重定向 5 支援多執行緒安全和執行緒級配置 使用ace的日誌相關功能,...

在Windows和VC 6 0下的ACE安裝手冊

5 如果使用c 標準庫,比如 iostream之類的,在 config.h 中 include 之前新增 define ace has standard cpp library 1 6 如果使用mfc 在 config.h 中 include 之前新增 define ace has mfc 1 每乙...

5 陣列綜合 8

5 陣列綜合 8 時間限制 1 s 記憶體限制 8192 kb accept 79 submit 177 提交 討論版 描述把n個數字中最小的數字和最大的數字交換,其他數字的位置保持不變,輸出變化後的n個數字。只會有乙個最大的數和乙個最小的數。輸入只有一組案例。乙個正整數n,然後是n個整數。輸出把n...