找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 6482|回复: 6

有问题请教

[复制链接]
发表于 2008-1-18 02:14:53 | 显示全部楼层 |阅读模式
有问题请教。我的代码是这样的:
struct ACE_DIR* base_dir = ACE_OS::opendir_emulation(this->dir.c_str());
struct ACE_DIRENT * dir;
dir = ACE_OS::readdir_emulation(base_dir);

每次编译都是
“opendir_emulation”:undeclared in namespace `ACE_OS';
“readdir_emulation” undeclared in namespace `ACE_OS';
所有的ACE_OS都报错。在vs2005下运行成功但是我用g++编译的时候出现这个问题。我操作系统是winXP,不知道是不是g++参数写错了 还是配置问题。请问这个g++参数该怎么写啊,谢谢
qq:437010643
sissi_0306@163.com
 楼主| 发表于 2008-1-18 02:15:29 | 显示全部楼层
有问题请教。我的代码是这样的:
struct ACE_DIR* base_dir = ACE_OS::opendir_emulation(this->dir.c_str());
struct ACE_DIRENT * dir;
dir = ACE_OS::readdir_emulation(base_dir);

每次编译都是
“opendir_emulation”:undeclared in namespace `ACE_OS';
“readdir_emulation” undeclared in namespace `ACE_OS';
所有的ACE_OS都报错。在vs2005下运行成功但是我用g++编译的时候出现这个问题。我操作系统是winXP,不知道是不是g++参数写错了 还是配置问题。请问这个g++参数该怎么写啊,谢谢
qq:437010643
sissi_0306@163.com
发表于 2008-1-18 11:43:35 | 显示全部楼层
好像是你g++的编译环境中,没有配置好文件包含路径,或者代码里面找不到引用路径导致。检查一下环境变量。
发表于 2008-1-19 15:30:12 | 显示全部楼层
加 include ”ACE_OS.h“
发表于 2012-11-12 09:04:46 | 显示全部楼层
这个问题有解吗?楼上的方法不可行。”ACE_OS.h“这个头文件,在ACE5.6以后的版本就没有了!
发表于 2012-11-14 09:05:54 | 显示全部楼层
问题已经解决!
struct ACE_DIR* base_dir = ACE_OS::opendir_emulation(this->dir.c_str());
struct ACE_DIRENT * dir;
dir = ACE_OS::readdir_emulation(base_dir);
通过分析ACE源码,该ACE_OS::opendir_emulation还是不跨平台的,所以不能在linux上使用。在linux上使用,直接使用ACE_OS::opendir(this->dir.c_str());,该函数是跨平台,且效果相同。
发表于 2012-11-15 13:24:42 | 显示全部楼层
以后建议学会一种分析错误的方法。
比如编译报错,某些函数找不到,一般有几种方法,首先,确定这个函数是不是基础的函数,如果不是,那么是否是依赖第三方库,如果是,那么是不是第三方库的路径没有包含在其中,如果不是,则说明编译的第三方库没有此接口,检查第三方库。
因为在ACE中,有很多宏定义来区分不同平台上的API调用规则。如果发现了你在此平台上找不到的API,那么说明有些宏定义失效了,找一下你的ACE编译的,config.h里面的宏定义。
另外,ACE在很多AP中并不是完全跨平台的,有些实现甚至只是简单的返回-1,所以强烈建议使用的时候读一下接口的说明(一般在.h文件里面有)。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-4 01:10 , Processed in 0.016371 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表