场景

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)下载最新代码重新编译