程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> C++網絡開發包ACE環境的配置與調試

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

編輯:vc教程

  

  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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved