ACE在win32平台上的安装,与VC6的集成

 
(ACE版本: ACE5.5
wind

使用 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 的更多信息可以在这里找到。
Allen
一、安装TAO,需要先编译并安装ACE。

二、ACE的编译和安装步骤见http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-INSTALL.html。TAO的编译和安装步骤见http://www.cs.wustl.edu/~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,包括源程序、编译生成的中间文件,等等,但有些例子及服务我没有编译。

祝学有所成!

马维达
wind
如果需要和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运行时库),就需要自己修改工程文件了
Allen
将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
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值