VS2008下ACE/TAO的编译for WINDOWS

1. 下载ACE+TAO.zip

示例版本:ACE+TAO+CIAO-5.7.0.zip(选择Full下载,它包含了vc9的解决方案)

下载地址:http://download.dre.vanderbilt.edu/

2. 解压至自定义目录

我们现在把它解压到C:/,现在ACE的目录如下显示 C:/ACE_wrappers |- ace |- apps |- gperf |... |- docs |- TAO |- CIAO |- docs |- tao |- TAO_IDL |- orbsvcs |... |...

3. 配置环境变量 ACE_ROOT = C:/ACE_wrappers TAO_ROOT = C:/ACE_wrappers/TAO 在系统环境变量Path中添加,否则会找不到DLL. %ACE_ROOT%/bin; %ACE_ROOT%/lib; 两项,在以后的工程中需要用到

秋水秋叶 10-03-24, 18:47

4、选择Tools -> Options -> Projects and Solutions -> VC++ Directories,添加如下编译器环境变量:

Executable files:

$(ACE_ROOT)/bin

$(CIAO_ROOT)/bin(待选)

Include files:

$(ACE_ROOT)

$(TAO_ROOT)

$(TAO_ROOT)/orbsvcs

$(CIAO_ROOT)(待选)

$(CIAO_ROOT)/ciao(待选)

Library files:

$(ACE_ROOT)/lib

5. 编译ACE a. 在%ACE_ROOT%/ace下添加config.h,内容可以如下,我们不使用MFC等,故内容比较简单,需要的用户可以参考%ACE_ROOT%/ACE-INSTALL.html安装指导文件添加相应信息

/* config.h */ #ifndef CONFIG_H #define CONFIG_H

#define ACE_NO_INLINE #define ACE_HAS_STANDARD_CPP_LIBRARY 1 #include "ace/config-win32.h"

#endif //config.h

注:

1、#include "ace/config-win32.h"以说明是要在win32平台下进行编译。

注: #include "config-win32.h"亦可

2、如果是98/ME,则在ACE_ROOT/ace/config.h的最前面加上

#define ACE_HAS_WINNT4 0

来关掉一些NT/2000中特有的代码。

3、 如果你想用MSVC的STL库 (如iostream, cstdio等), 则在config.h文件中的

#include语句前添加下面的行:

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

注: 推荐使用该编译开关. 否则对新手而言, 在自己的工程中使用MSVC的STL库时会有一些小麻烦.

4、如果在ACE中要使用MFC的库,则需要在config.h中添加:

#define ACE_HAS_MFC 1

5、在默认情况下,所有的ACE工程使用的是MSVC的DLL文件作为运行时库。你可以选择使用ACE的静态库文件(LIB)而不需考虑这些运行时库。选择动态链接的原因是所有的NT都会包含这些dll文件(节省空间). 如果你想使用MFC的静态库版本,则需要在config.h中加入以下的宏定义:

#define ACE_USES_STATIC_MFC 1

你也可以全部使用静态库,这需要你在ACE的工程文件中自己设置。

6. 如果定义了ACE_AS_STATIC_LIBS 宏,则ACE 库将被编译成为静态库。如果你的程序要静态链接ACE的静态库,则在你的工程中也要定义这个宏:

ACE_AS_STATIC_LIBS.

作为可选项,为了减小静态库文件和你的可执行程序的大小,你可以在ACE_ROOT/ace/config.h文件的#include语句前添加如下的宏定义#define ACE_NO_INLINE来禁止内联函数。

7、 若是在其它平台上进行编译,还需要添加文件:

$ACE_ROOT/include/makeinclude/platform_macros.GNU

b.编译顺序 (按照%ACE_ROOT%中提供的项目文件导入VS2008)

%ACE_ROOT%  vcbuild ACE_vc9.sln "Debug|Win32"

6、编译TAO

cd %TAO_ROOT/TAO_IDL

vcbuild TAO_IDL_vc9.sln "Debug|Win32"

vcbuild TAO_IDL_vc9.sln "Release|Win32"

cd %TAO_ROOT/

vcbuild TAO_ACE_vc9.sln "Debug|Win32"

vcbuild TAO_ACE_vc9.sln "Release|Win32"

本实验系统是选择打开E:/ACE_wrappers/TAO文件夹下的TAO_ACE_vc9.sln,首先是对ACE进行编译,然后是对TAO进行编译,因为是应用TAO进行CORBA应用开发,下面的几个工程是必须的:

6.1、TAO_IDL_EXE(即tao_idl,也就是我们的idl编译器,自然少不了,并且后续工程也需要用到该编译器。该工程依赖于ACE、TAO_IDL_BE、TAO_IDL_FE、gperf等多个工程,编译TAO_IDL_EXE是会自动先编译这几个工程),该程序在编译TAO时已自动编译。

6.2、PortableServer(即POA库,编写CORBA应用程序哪能离得开POA,该工程依赖于ACE、TAO、CodeSet、AnyTypeCode等工程)

6.3、Naming_Service(即命名服务,这是对于我们开发CORBA应用相当有用的一个基本服务,该工程依赖的其它工程就更多了,就不再一一列举了)

6.4、由于工程之间存在的复杂依赖关系,你只需编译以上这三个工程,就可以自动完成约30个工程的编译工作。编译完以上工程后,你的%ACE_ROOT%/lib和%ACE_ROOT%/bin下会多出来一些.lib、.dll和.exe文件。作为一个ORB服务,Name_Service.exe被放在其对应的子目录%TAO_ROOT%/orbsvcs/Name_Service下。

7、需要添加TAO的静态链接库文件:

(注意区分 Debug版 Release版)

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

普通客户端:

Debug版: ACEd.lib

Release版: ACE.lib

普通服务器:

在ACE.lib/ACEd.lib的基础上, 还需要添加:

Debug版: PortableServerd.lib (POA适配器)

Release版: PortableServer.lib

客户端和服务端

如果使用了命名服务, 则需要添加 TAO_CosNaming.lib 或TAO_CosNamingd.lib

如果使用了事件服务, 则需要添加 TAO_CosEvent.lib 或TAO_CosEventd.lib

注意: TAO分Debug和Release版, 所以在开发时, Debug和Release版的设置要严格区分. 即使是MS自己的库也是这样. 如对于Debug版, 要包含MSVCRTd.lib而不是MSVCRT.lib.

注:

基于VS2008编译的ACE/TAO的动态链接库(.dll)由于是基于.net frame。在没有安装.net frame的机器上是不能使用的。

猜你喜欢

转载自blog.csdn.net/zhoutanliang/article/details/6263660
今日推荐