青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

如何編譯,配置ACE

Posted on 2006-02-23 19:53 heart in the world 閱讀(2198) 評論(0)  編輯 收藏 引用 所屬分類: reprinting

ACE是個很有用的開放源代碼的C++網絡編程開發包,利用它比直接用API更有利于代碼的健壯性,可移植性,并相對簡單。
估計大家剛接觸ACE時,都有一定難度,說不定就半途放棄了,這是我學ACE兩天中的總結,基本上不成文,但我想研究到ACE的你一定會明白下文的意思。

一、ACE官方主頁:http://www.cs.wustl.edu/~schmidt/ACE.html
    下載地址:http://deuce.doc.wustl.edu/Download.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.edu/~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.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html。TAO的編譯和安裝步驟見http://www.cs.wustl.edu/~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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


posts - 4, comments - 8, trackbacks - 0, articles - 2

Copyright © heart in the world

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性久久久久久久久| 一道本一区二区| 国产一级揄自揄精品视频| 亚洲网站视频福利| 日韩午夜在线播放| 欧美激情一二三区| 亚洲精品久久久久久久久久久久 | 亚洲视频中文字幕| 久久av资源网站| 香蕉久久精品日日躁夜夜躁| 亚洲三级观看| 久久人人九九| 亚洲国产高清自拍| 一区二区三区久久| 精品动漫一区| 欧美成人综合| 久久婷婷国产综合国色天香| 午夜国产精品视频| 亚洲淫性视频| 中文精品在线| 久久狠狠久久综合桃花| 久久精品国产第一区二区三区最新章节 | 麻豆成人在线| 免费日韩成人| 欧美日韩播放| 小黄鸭精品aⅴ导航网站入口| 欧美在线free| 国产美女精品视频免费观看| 欲色影视综合吧| 欧美亚洲一区二区在线观看| 亚洲精品无人区| 欧美精品尤物在线| 一本久久a久久免费精品不卡| 在线视频日韩| 久久天天躁狠狠躁夜夜av| 亚洲欧美精品在线观看| 在线观看亚洲| 久久精品国产久精国产一老狼| 亚洲精品孕妇| 亚洲美女诱惑| 久久激五月天综合精品| 亚洲影院在线| 欧美成人国产一区二区| 亚洲欧美www| 亚洲图片你懂的| 免费不卡中文字幕视频| 亚洲人成网站777色婷婷| 欧美一站二站| 国产精品chinese| 亚洲国产一成人久久精品| 99在线视频精品| 美女啪啪无遮挡免费久久网站| 国产欧美日韩精品丝袜高跟鞋| 亚洲少妇在线| 亚洲最新视频在线播放| 欧美日韩国产91| 99精品国产热久久91蜜凸| 亚洲精品视频二区| 国产精品国产自产拍高清av王其| 99综合精品| 亚洲乱亚洲高清| 欧美黑人在线播放| 一区二区精品国产| 香蕉久久精品日日躁夜夜躁| 亚洲一二三区在线| 欧美国产大片| 亚洲在线视频观看| 欧美一区二区网站| 欧美激情国产精品| 午夜精品视频在线| 欧美喷潮久久久xxxxx| 国产一区欧美日韩| 欧美一区二区三区在| 亚洲韩国日本中文字幕| 欧美在线关看| 韩国女主播一区二区三区| 亚洲香蕉网站| 亚洲午夜一级| 亚洲国产精品一区二区www在线| 国产精品视频精品视频| 一本久久a久久精品亚洲| 久久这里只精品最新地址| 亚洲一区二区三区乱码aⅴ| 亚洲福利av| 亚洲你懂的在线视频| 欧美亚洲在线| 久久综合伊人77777麻豆| 亚洲视频你懂的| 午夜精品一区二区三区在线视| 欧美性生交xxxxx久久久| 欧美~级网站不卡| 曰韩精品一区二区| 亚洲国产老妈| 欧美专区在线| 美女视频黄 久久| 亚洲黄色毛片| 亚洲一区视频| 久久久91精品国产一区二区三区 | 久久久久久网站| 麻豆91精品| 亚洲靠逼com| 亚洲欧美另类国产| 欧美午夜电影完整版| 亚洲欧美精品一区| 亚洲精品一区二区网址| 亚洲国产第一| 欧美视频在线一区二区三区| 欧美怡红院视频一区二区三区| 一本到高清视频免费精品| 久久精品国产亚洲高清剧情介绍| 亚洲激情在线观看| 一本色道88久久加勒比精品| 亚洲片在线资源| 亚洲欧美久久久久一区二区三区| 亚洲已满18点击进入久久| 蜜臀久久久99精品久久久久久| 久久亚洲免费| 久热爱精品视频线路一| 六月天综合网| 久久婷婷国产麻豆91天堂| 一本不卡影院| 一色屋精品亚洲香蕉网站| 欧美日韩另类一区| 伊人久久综合97精品| 欧美日韩精品免费观看视频完整| 亚洲欧洲一区二区三区在线观看| 久久成人精品无人区| 亚洲一区二区三区国产| 欧美日韩国产精品专区 | 久久大逼视频| 亚洲婷婷在线| 亚洲欧美日本日韩| 中文在线不卡视频| 国产精品99久久久久久久女警| 一区二区三区高清不卡| 欧美高清在线视频| 国产精品影视天天线| 日韩视频在线免费观看| 欧美 日韩 国产 一区| 欧美一区二区私人影院日本 | 亚洲综合国产| 老司机精品视频网站| 欧美1级日本1级| 91久久亚洲| 久久成人av少妇免费| 亚洲免费在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 欧美大片一区二区| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲欧美美女| 亚洲视频日本| 久久超碰97人人做人人爱| 久久精品国产综合精品| 美女91精品| 亚洲经典三级| 久久综合狠狠综合久久综合88| 一区二区三区四区蜜桃| 一区二区高清在线| 久久日韩粉嫩一区二区三区 | 在线观看成人av| 久久久久天天天天| 乱码第一页成人| 久久精品国产亚洲精品| 亚洲欧美日本国产专区一区| 中日韩男男gay无套| 久久综合成人精品亚洲另类欧美 | 久久福利毛片| 久久久欧美一区二区| 亚洲老板91色精品久久| 性色av一区二区三区红粉影视| 先锋影音网一区二区| 欧美一区二区三区啪啪| 亚洲在线国产日韩欧美| 欧美亚洲网站| 91久久久在线| 欧美成人一品| 亚洲国产黄色| 亚洲精品一品区二品区三品区| 一本色道久久综合狠狠躁篇怎么玩 | 国产一区二区av| 久久精品国产99精品国产亚洲性色 | 国产精品成人在线观看| 欧美日韩一区二区三区在线看 | 国产午夜精品麻豆| 欧美国产91| 在线观看免费视频综合| 黄色欧美日韩| 亚洲欧美日韩一区在线| 日韩香蕉视频| 国产麻豆综合| 鲁大师成人一区二区三区| 亚洲欧美日韩在线一区| 亚洲国产精品成人一区二区 | 欧美性色视频在线| 欧美一区2区三区4区公司二百| 中文欧美字幕免费| 国产欧美精品va在线观看| 亚洲第一页中文字幕| 欧美在线免费观看| 欧美不卡视频一区|