场景
Thrift当前版本0.9.0,Boost库从1.64升级到1.72,编译libthrift静态库,提示如上错误
网上提供的解决方案
void _wassert(const wchar_t *,const wchar_t *,unsigned int)
void apache::thrift::protocol::_wassert(const wchar_t *,const wchar_t *,unsigned int)
解决方案:
这算命令空间污染的问题, 添加::, 使得对_wassert的调用采用全局声明的那个函数
修改assert.h
#define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )
为
#define assert(_Expression) (void)( (!!(_Expression)) || (::_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )
最终采用方案
从Apache/Thrift - 码云 - 开源中国 (gitee.com)下载最新代码重新编译