graduate 发表于 2008-5-27 19:46

头文件怪事

#include "ace/Log_Msg.h"
#include "ace/Malloc_Base.h"
#include "ace/Guard_T.h"
#include "ace/OS_NS_string.h"
上面的头文件是什么呀?怎么找不到(vc6.0)

erdgzw 发表于 2008-5-29 13:29

在网上帮你找的资料,你应该是没有安装ACE安装包。

ACE安装(VC/LINUX)
 ACE安装作者:菩提
ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)构架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++包装外观(Wrapper Façade)和构架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。

ACE的目标用户是高性能和实时通信服务和应用的开发者。它简化了使用进程间通信、事件多路分离、显式动态链接和并发的OO网络应用和服务的开发。此外,通过服务在运行时与应用的动态链接,ACE还使系统的配置和重配置得以自动化。

ACE正在进行持续的改进。Riverace公司(http://www.riverace.com)采用开放源码商业模式对ACE进行商业支持。此外,ACE开发组的许多成员目前正在进行The ACE ORB(TAO,http://www.cs.wustl.edu/~schmidt/TAO.html)的开发工作。

可以从以下地址下载ACE的安装包:http://deuce.doc.wustl.edu/Download.html。这里提供有ACE的多个版本的集成包,这里以ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz为例。



VC下的安装

1.解压后放在D盘(或者自定义也可)

D:\ACE_wrappers

2.在D:\ACE_wrappers\ace目录下新建文件config.h加入一行
    #i nclude "ace/config-win32.h"

3.编译:用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\下

4.为系统变量PATH加上D:\ACE_wrappers\bin   

VC下的ACE使用

1.建立工程

2.修改配置

project-->settings…-->C/C++ àCategory:Code Generation àUse run-time library设置为“Debug Multithreaded DLL”

project-->settings…-->C/C++ àCategory:Preprocessor àAdditional include directories中添加D:\ACE_wrappers

project-->settings…àLink àCategory:Input àObject/library modules:中添加aced.lib,并在下面的Additional library path里面添加路径D:\ACE_wrappers\ace

3.新建文件编辑代码

4.编译运行

5.若不能编译release版本,需在工程首处定义宏 _WIN32_WINNT为0x0400





Linux下的安装

1   先设置ACE_ROOT环境,命令:

   “vi /etc/profile”

   在其中加入4行

   ACE_ROOT=/opt/ACE

   export ACE_ROOT

   LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH

   export LD_LIBRARY_PATH

可以加在“export PATH USER….”后的。完成后将/etc/profile执行一次,命令:

         “/etc/profile”

这样我们的ACE_ROOT就设置好了,可以用如下命令查看ACE_ROOT是否设置好了:

                  “echo $ACE_ROOT”

这个时候最好reboot启动一次linux。

2.假设安装文件的位置如下:/home/my/ACE/ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz

从其中解压出单个文件ACE-install.sh:

“tar –zxvf ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz ACE_wrappers/ACE-install.sh”

解好后,会出来一个新的子目录“ACE_wrappers”。修改其中的ACE-install.sh文件的如下选项:

(1)      先找到“MY_ACEDIR=${HOME}/aceconfig”,将其改成“MY_ACEDIR=/home/my/ACE”,就是改成我们自己建的、放有ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz文件的目录,之后去掉前面的注释“#”号。

(2)      找到“MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h”,将其修改成“MY_ACE_CONFIG=config-linux.h”。

(3)      找到“MY_ACE_GNU_MACROS=platform_sunos5_sunc++.GNU”,将其改成“MY_ACE_GNU_MACROS=platform_linux.GNU”。

保存。

3.运行该文件

./ACE-install.sh

4.将$ACE_ROOT/ace下面的libACE.so.5.4.0拷贝到/lib/目录下。

5.上述编译方法得到的为debug版本,若需获得release版本的,可在$ACE_ROOT/ace目录下重新make,命令:“#make debug=0”.





Linux下ACE的使用

  Linux下的ACE项目往往需要使用makefile,相关问题参考书上教程或者示例的Makefile文件。也可以使用MW和CMPC工具生成,在此不再累述。



作者: 218.18.18.*2006-5-29 23:13   回复此发言   

--------------------------------------------------------------------------------

2 回复:ACE安装(VC/LINUX)
安装ACE 选择自 zmxjh 的 Blog
关键字 安装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时不能通过,有知道的朋友请赐教。


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的更多信息可以在这里找到。


将ACE与VC6集成在一起

一.打开 Tools>Options>Directories
加入以下内容:
Executable File:
C:\ACE_wrappers\bin

Include File:
C:\ACE_wrappers\


Library Files:
C:\ACE_wrappers\ACE

Source Files:
C:\ACE_wrappers\


二.加入 C:\ACE_wrappers\bin 到系统环境变量 path中

在MFC程序中使用时,应该在InitInstance()中添加:

WSDATA wsData;
WORD VerRequested = MAKEWORD(2,2);

WSAStarup(VerRequested,&wsData)


作者: 218.18.18.*2006-5-29 23:33   回复此发言   

--------------------------------------------------------------------------------

3 C++网络开发包ACE环境的配置与调试 qiek(原作)
C++网络开发包ACE环境的配置与调试 qiek(原作)

关键字 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

graduate 发表于 2008-6-5 08:58

回复 2楼 的帖子

谢谢您的详尽答复,请问这个安装包能在windows系统下使用吗?
因为我的机子安装的是xp系统

erdgzw 发表于 2008-6-5 09:07

呵呵,你说呢?VC是谁开发的?
上面都给出了VC的安装方法,当然能在Windows下使用了,在Linux下也可以。
页: [1]
查看完整版本: 头文件怪事