问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何编译,配置ACE

发布网友 发布时间:2022-04-22 07:27

我来回答

1个回答

热心网友 时间:2022-06-17 17:09

ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单。
估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思。

一、ACE官方主页: http://www.cs.wustl.e/~schmidt/ACE.html
下载地址: http://deuce.doc.wustl.e/Download.html

Building and Installing ACE:http://www.dre.vanderbilt.e/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.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.e/~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.e/~schmidt/ACE_wrappers/ACE-INSTALL.html。TAO的编译和安装步骤见http://www.cs.wustl.e/~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
如何在linux编译和使用ACE

具体ACE_ROOT的路径,根据实际情况修改。2.2 执行编译命令 在$ACE_ROOT/ace目录下运行命令:ln -s config-linux.h config.h 在$ACE_ROOT/include/makeinclude目录下执行命令:ln -s platform_linux.GNU platform_macros.GNU 回到目录$ACE_ROOT下,执行命令:make 大概20分钟左右编译完成。三:使用AC...

还在找storm proxy?

作为上海圣钧信息科技有限公司的工作人员,我公司并不提供名为"Storm Proxy"的服务。我们致力于提供高质量的信息技术服务,包括但不限于云计算、大数据处理、人工智能等领域。我们的服务对象主要是企业客户,为其提供定制化的解决方案和技术支持。如果您正在寻找相关的服务,建议您通过搜索引擎或行业专业网站等途径进行查询。同时,请注意防范虚假信息和欺诈行为,确保您选择正规、可靠的服务提供商。如有其他问题或需要进一步了解,欢迎随时与我们联系。SmartProxy企业级海外住宅IP代理服务商,覆盖全球200+国家和地区,高匿稳定,动态住宅代理/静态住宅代理/账密提取,100%原生住宅IP,城市级定位,支持HTTP/HTTPS/SOCKS5协议,不限带宽,纯净高匿,网络集成更快捷,注册即送流量!Smartproxy代理...

什么是ACE软件啊

ACE屏蔽了底层平台特定的语义,使用ACE编写的C++程序,可以在linux/windows/HP-Unix下编译执行,而且效率很高。曾经做过的一个VOIP项目就是用ACE写的,那个项目的技术相当复杂,需要用到socket/multi-threading等很多与操作系统联系紧密的技术,但用了ACE(界面用Qt)后,那个项目源码可以直接在linux和windows...

java 代码怎么试运行?下面有一段:

首先,在这个类上右键选择run-&gt;运行配置,注意是运行配置,不是直接运行,选择选项卡Arguments(自变量),在VM Arguments(VM自变量)里面写上-ea,不要有空格,应用一下,运行就可以了,在你的代码之上改了一个main package com.test.math;public class TestTwo { private final int rank;private fina...

linux编译TAO的问题,求高手指导!!!

不知道你是用的什么版本的,在5.5以上吧,可以使用configure文件来编译安装ACE+TAO,不过,我编译通过了,就是安装的时候出了问题,不过你说的/root/x86/ACE_wrappers/build/TAO/orbsvcs/Naming_Service目录下是可以生成Naming_Service的

c语言问题,下面这段程序输出为什么是ace?

1.没有空格时。首先执行c=getchar();此时c='a';然后比较getchar()!=' #';此时,getchar()=‘b’;但是c=‘a’;所以输出a 再执行c=getchar();此时c='c';然后比较getchar()!=' #';此时,getchar()=‘d’;但是c=‘c’;所以输出c。所以输出对的。2.有空格时,情况比较诡异。c是...

常见的文件格式有哪些

CH:OS/2配置文件 CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片 CHM:编译过的HTML文件 CHP:Ventura Publisher章节文件 CHR:字符集(字体文件) CHT:ChartViem文件;Harvard Graphics矢量文件 CIF:Adaptec CD 创建器 CD映像文件 CIL:Clip Gallery下载包 CIM:SimCity 2000文件 CIN:OS/2改变控制文件用于跟踪INI...

如何编译MTK的模拟器

1. Build MTK SDK Packages -对于mt6572以前的chip,用如下的命令编译:./makeMtk banyan_addon -从mt6572开始的chip,由于mt6572之后CPU开始支持X86架构,其performace会更好,mt6572之后,建议编译x86的emulator来使用../makeMtk banyan_addon_x86 编译完成后会在out/host/linux-x86/sdk_addon下生成MT...

文件有很多种后缀名,哪位能给我讲讲那些后缀名各代表什么文件?~_百度知...

fp 配置文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下 fpt 备注字段文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下 frt 报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下 frx 报表文件,存在于Dbase,Foxbase,Foxpro系列软件的环境下 fxp 编译后的程序,存在于Dbase,Foxbase,Foxpro系列软件的环境下 gif 在各种...

windows系统文件中各种扩展名分别是什么意思?

CH:OS/2配置文件CHK:由Windows磁盘碎片整理器或磁盘扫描保存的文件碎片CHM:编译过的HTML文件CHP:Ventura Publisher章节文件CHR:字符集(字体文件)CHT:ChartViem文件;Harvard Graphics矢量文件CIF:Adaptec CD 创建器 CD映像文件CIL:Clip Gallery下载包CIM:SimCity 2000文件CIN:OS/2改变控制文件用于跟踪INI文件中的变化...

要成为一名专业的程序员,从零开始需要怎么一步步来比较好,要把最底层...

Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。Source Insight (或 ctag)使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。3、 熟悉Unix/Linux Shell和常见的命令行如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧一定要...

WINDML配置及编译 uboot配置与编译 dev配置编译环境 编程需要什么配置的电脑 java 配置 linux内核配置 java的安装与配置 Linux编译内核 linux重新编译内核
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在哪个银行兑换外币 外币业务哪个银行 上海再现“天价”大白菜,疫情期间哄抬物价会被如何处罚? 买保险的注意事项有什么好处和坏处 有一种成功的捷径,叫”追求极致“ 白茶论到极致以“简”为美,从白茶的形、色、香、味说起 表达深爱到极致的句子 陈霸先大帝《陈霸先大帝》全部章节 疫情期间哄抬物价处罚是什么? 疫情期间,商家哄抬物价该怎么处罚? 如何在 Excel 中使用直方图加载宏 office excel加载宏路径找不到怎么办 07excel的加载宏在哪 怎么在excel2013中加载宏 office excel 加载宏 怎么做 excel2010如何加载宏 如何用Excel编辑及如何开启加载宏 电动车车行回收电池吗? 2010新版本的excel里面加载宏在那里找啊 我想做回收电瓶车上的旧电瓶生意 不知道行情如何 Microsoft Office Excel怎样加载宏 excel如何在菜单栏显示加载宏 office2010的excel里面如何加载宏?? 工作表中宏怎加载 在excel中怎样加载宏 2019excel怎么加载宏 Excel管理加载宏怎么使用? 怎么在excel中加载宏 现在有人回收电动车充电器,目的是什么? 如何取消支付宝中等待付款的交易号 iphone beta版怎么网上升级 QuickHackKit|s60v3手机权限破解 傲游Beta版浏览器好用吗? iPhone5s到底要不要升级ios10.3beta4 为什么没有收到iOS10.3 Beta3推送 ios sirikit 可以在oc下集成吗 beta版xcode不能发布app那要怎么兼容新系统 ios10Beta3描述文件下载地址 VS 2010 Beta2对于“Navigate To ”的支持是如何使用... Xcode 7 beta 1,playground 一直 running,有人解... ace怎么编译 电脑上如果已经下载下来鼠标指针,要怎么安装? oppoA83t手机里的相机拍照。照片如何自动生成当天所拍照的时间? 鼠标指针下载后怎么安装? 上海市公积金如何提取 鼠标指针下载后怎样安装到电脑上? 我下了一款鼠标指针特效,怎么安装到电脑上啊? 上海住房公积金怎样提取 电脑桌面的鼠标怎么弄? 鼠标指针如何添加