C++網路開發包ACE環境的配置與調試

來源:互聯網
上載者:User

 

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

我的系統內容是:Win2k pro(sp4)、VC6.0 (sp5)

過一陣,我的首頁上要開論壇,並設VC專區,歡迎大家上去交流
http://www.liufei.com

一、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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.