yeqing

C++博客 首页 新随笔 联系 聚合 管理
  1 Posts :: 14 Stories :: 10 Comments :: 0 Trackbacks

在VS6上编译ACE的方法

1.下载最新的ACE Release版本压缩包,解压后目录为: ACE-版本号\ACE_wrappers\
2.加载工程文件,目录: ACE_wrappers\ace\ace.dsw
3.新建 config.h 文件到 ACE_wrappers\ace目录下
4.添加包含头文件声明: #include "ace/config-win32.h"
5.添加宏定义 (注意:添加在 #include 之前)
 (1).#define ACE_HAS_WINNT4 0  //OS不是NT4.0或以后版本
 (2).#define ACE_HAS_STANDARD_CPP_LIBRARY 1  //使用标准C++库
 (3).#define ACE_HAS_MFC 1          //使用MFC库
 (4).#define THR_USE_AFX 1          //使用CWinThread产生新的线程类
 (5).#define ACE_USES_STATIC_MFC  1 //静态连接MFC库
 (6).#define ACE_AS_STATIC_LIBS   1 //生成静态的ACE库
 (7).#define ACE_NO_INLINE          //是否使用内联函数在静态库内
6.编译得到.lib和.dll文件

好象使用时有个问题,不知道大家有没有碰到过:
1. 在使用ACE发布Release版本程序时,
TryEnterCriticalSection导致无法编译的问题

解决方法:
  (1). 工程 Project-->setting-->C/C++  写入:_WIN32_WINNT=0x0500
  (2).包含头文件为:windows.h

 


如果有“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
  
*********************************************************************************

在Linux系统中安装和配置ACE

准备工作:

1.确保你的Linux操作系统的开发环境(gcc、make……)是完整且可用的。
2.在安装ACE的过程中,可能需要root权限,因此确保你拥有root帐户的密码。
3.对于典型的Redhat9系统,autoconf程序的版本可能过低,你需要首先升级它。

   升级的步骤如下:

在控制台中输入 autoconf -V,查看你的autoconf程序的版本
如果低于2.57g,你需要到
http://www.gnu.org/software/autoconf/ 去下载最新版本的autoconf程序,目前autoconf程序的版本是2.59
根据tarball中的安装说明,编译并安装升级autoconf程序
开始安装:

经过上面的准备工作,现在你已经具备了安装ACE的条件。下面开始正式的安装工作。

首先确定ACE的安装路径,并建立相应的目录。
这里,我们把ACE安装在/home/zhc/ace/的目录下,先执行
mkdir /home/zhc/ace
然后将获得的ACE源代码包解至该目录下。
tar zxvf ACE-5.4.tar.gz /home/zhc/ace
这时,在ace的目录下会建立一个名为ACE_wrappers的子目录,ACE所有的源代码、工具、和例子都在这个目录中。
先进入该目录,执行
cd /home/zhc/ace/ACE_wrappers
然后建立一个子目录,用于存放ACE编译后的目标文件
mkdir build
cd build
接着,执行configure脚本,检查你的系统环境,配置并生成适合你的系统的Makefile文件。
在执行configure脚本时,可以加入许多配置选项,其详细说明可以参看ACE_wrappers目录下的ACE-INSTALL.html文件,
对于Redhat9系统来说,不必加任何参数,ACE就可以很好的工作了。
../configure
在漫长的检查和配置之后,如果没有什么问题,你就可以开始编译了。
这一步很简单,执行
make
然后,泡一杯茶,静静的等待就行了。
如果编译顺利的通过(通常都会是这样的),那么恭喜你,你已经成功了一大半了,下面要做的仅仅是以些配置工作而已。
接下来的工作是安装,这一步是可选的,目的是把编译生成的ACE的库文件、头文件和手册页等安装到/usr/local的相应目录中去,为了今后使用的方便,我建议你还是进行这一步,执行
su
root's password
make install
安装之后,我们就可以进行最后的配置工作了。
首先设置环境变量ACE_ROOT,执行
setenv ACE_ROOT /home/zhc/ace/ACE_wrappers
注意其中的路径要根据你的实际情况而定
如果你不想每次都手工设定路径,可以编辑你的bash的配置文件,执行
cd
vi .bash_profile
在其中填加如下两行
ACE_ROOT=/home/work/research/ace/ACE_wrappers
export ACE_ROOT
然后,在$ACE_ROOT/ace目录中创建一个名为config.h的文件,在其中包含如下一行
#include "ace/config-linux.h"
或者,简单起见,你也可以直接建立一个指向config-linux.h的符号链接,执行
ln -s config-linux.h config.h
同样,在$ACE_ROOT/include/makeinclude目录中创建一个名为platform_macros.GNU的文件,在其中包含如下一行
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
或者,简单起见,你也可以直接建立一个指向platform_linux.GNU的符号链接,执行
ln -s platform_linux.GNU platform_macros.GNU
最后一步,设置环境变量LD_LIBRARY_PATH,执行
setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH
或者在~/.bash_profile文件中添加如下两行
LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:/usr/local/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
安装完成:

经过上面的步骤,ACE已经安装到了您的系统上了,
下面我们将编译并执行ACE的例程以验证我们的工作。
这里我们以《C++网络编程,卷一》所带的例子为例。

进入例程目录,执行
cd $(ACE_ROOT)/examples/C++NPv1
编译例子程序,执行
make
如果前面的安装和配置正确,很快就能够得到编译后的例子程序。
分别执行一个服务器程序(随便哪一个都行)和一个客户端程序(Logging_Client),
如果程序运行正确,说明前面的安装和配置成功,下面你就可以开始你的ACE学习之旅了

 

posted on 2006-08-07 09:46 夜沁 阅读(2226) 评论(2)  编辑 收藏 引用 所属分类: ace

Feedback

# re: ACE的安装 2006-09-23 15:42 acejoy
国内专业的ACE网络编程、开发论坛开通:
www.acejoy.com
www.acedevelop.com
涉及ACE使用和开发,中间件、服务器端软件的设计,P2P技术,
socket网络编程、应用开发等内容。
欢迎加入,大家一起交流、学习成长!
  回复  更多评论
  

# re: ACE的安装 2006-10-20 16:18 夜沁
@acejoy 很高兴参与
大家共同进步吧
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理