找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3684|回复: 6

编译支持wchar的ACE不成功

[复制链接]
发表于 2008-8-30 16:58:18 | 显示全部楼层 |阅读模式
:(在windows下用minGW编译,按照说明在ace/config.h 中加入以下3行
#include "ace/config-win32.h"
#define ACE_HAS_WCHAR
#define ACE_USES_WCHAR

最后报错:
In file included from OS_NS_stdio.cpp:12:
m:/c++/ACE_wrappers/ace/OS_NS_stdio.inl: In function `FILE* ACE_OS::fdopen(void*, const ACE_TCHAR*)':
m:/c++/ACE_wrappers/ace/OS_NS_stdio.inl:519: error: invalid conversion from `const ACE_TCHAR*' to `wchar_t*'
m:/c++/ACE_wrappers/ace/OS_NS_stdio.inl:519: error:   initializing argument 2 of `FILE* _wfdopen(int, wchar_t*)'
OS_NS_stdio.cpp: In function `FILE* ACE_OS::fopen(const char*, const ACE_TCHAR*)':
OS_NS_stdio.cpp:194: error: invalid conversion from `const ACE_TCHAR*' to `wchar_t*'
OS_NS_stdio.cpp:194: error:   initializing argument 2 of `FILE* _wfdopen(int, wchar_t*)'
OS_NS_stdio.cpp: In function `FILE* ACE_OS::fopen(const wchar_t*, const ACE_TCHAR*)':
OS_NS_stdio.cpp:238: error: invalid conversion from `const ACE_TCHAR*' to `wchar_t*'
OS_NS_stdio.cpp:238: error:   initializing argument 2 of `FILE* _wfdopen(int, wchar_t*)'
make[1]: *** [.shobj/OS_NS_stdio.o] Error 1
make[1]: Leaving directory `m:/c++/ACE_wrappers/ace'
make: *** [ACE] Error 2

如果没有
#define ACE_HAS_WCHAR
#define ACE_USES_WCHAR
这两行就没问题。。。
 楼主| 发表于 2008-8-30 16:59:48 | 显示全部楼层
试了刚下的最新的5.6.5

用5.6,5.5都试过,都是上面那个错

报的错很奇怪:   invalid conversion from `const ACE_TCHAR*' to `wchar_t*'
其实定义了ACE_USES_WCHAR后,ACE_TCHAR就是wchar_t
const wchar_t* 转不了wchar_t*,没道理嘛。。。

[ 本帖最后由 wishel 于 2008-8-31 10:49 编辑 ]
 楼主| 发表于 2008-8-31 10:45:00 | 显示全部楼层
公司要求程序要支持unicode,比较麻烦
现在只能这样:
在我的模块内部还是用char和string,在与别人模块的接口部分,如果需要传递字符串就进行转换,换成wchar_t和wstring。
好在ace/ace_wchar.h里面的ACE_Wide_To_Ascii和ACE_Ascii_To_Wide很好用。
发表于 2008-8-31 15:24:51 | 显示全部楼层
#ifndef _ACE_CONFIG_H_
#define _ACE_CONFIG_H_
#ifdef _UNICODE
#define ACE_HAS_WCHAR
#endif//_UNICODE

#include "ace/config-win32.h"
#endif//_ACE_CONFIG_H_

我的config.h内容。
 楼主| 发表于 2008-9-3 20:36:26 | 显示全部楼层
用#define ACE_HAS_WCHAR没问题,加了#define ACE_USES_WCHAR就不行了
今天用试着用vc编译了一下,也出了一堆问题。
ACE的ACE_TString也有问题,跟STL的stream不兼容。算了不折腾了,将就用自定义的吧。
发表于 2008-11-26 08:43:32 | 显示全部楼层
看来不止我遇到这个问题
发表于 2008-11-26 11:25:23 | 显示全部楼层
#define ACE_USES_WCHAR
去掉就可以了。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-12-23 21:49 , Processed in 0.016473 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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