wishel 发表于 2008-8-30 16:58:18

编译支持wchar的ACE不成功

:(在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: *** [.shobj/OS_NS_stdio.o] Error 1
make: Leaving directory `m:/c++/ACE_wrappers/ace'
make: *** Error 2

如果没有
#define ACE_HAS_WCHAR
#define ACE_USES_WCHAR
这两行就没问题。。。

wishel 发表于 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 编辑 ]

wishel 发表于 2008-8-31 10:45:00

公司要求程序要支持unicode,比较麻烦
现在只能这样:
在我的模块内部还是用char和string,在与别人模块的接口部分,如果需要传递字符串就进行转换,换成wchar_t和wstring。
好在ace/ace_wchar.h里面的ACE_Wide_To_Ascii和ACE_Ascii_To_Wide很好用。

winston 发表于 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内容。

wishel 发表于 2008-9-3 20:36:26

用#define ACE_HAS_WCHAR没问题,加了#define ACE_USES_WCHAR就不行了
今天用试着用vc编译了一下,也出了一堆问题。
ACE的ACE_TString也有问题,跟STL的stream不兼容。算了不折腾了,将就用自定义的吧。

codecola 发表于 2008-11-26 08:43:32

看来不止我遇到这个问题

winston 发表于 2008-11-26 11:25:23

#define ACE_USES_WCHAR
去掉就可以了。
页: [1]
查看完整版本: 编译支持wchar的ACE不成功