zoukankan      html  css  js  c++  java
  • ACE环境的配置与调试

    C++网络开发包ACE环境的配置与调试
     
    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


    作者Blog:http://blog.csdn.net/qiek/


    提醒大家要注意一点
    一定在使用任何ACE代码前调用ACE::init(),使用完之后调用ACE::fini()。如果忘记写编译器是不会提醒你的。也就是会得到ACE本来要解决的——运行时错误

  • 相关阅读:
    bootstrap 新手入门(一)【我是新手,请指正】
    zend studio 安装+汉化
    tp总结
    tp论坛 第三节 板块模板的建立和完善(二)
    tp论坛 分页(三)
    tp写一个微型论坛 (一)
    thinkphp第四节 模型与CURD
    thinkphp 第二节
    angular5中的自定义指令(属性指令)
    列表生成式和生成器生成式
  • 原文地址:https://www.cnblogs.com/adylee/p/1279669.html
Copyright © 2011-2022 走看看