错误信息:
/usr/local/include/thrift/server/TNonblockingServer.h:76:23: 错误:一个声明指定了多个类型
typedef THRIFT_SOCKET evutil_socket_t
其中的相关代码如下:
#ifdef LIBEVENT_VERSION_NUMBER
#define LIBEVENT_VERSION_MAJOR (LIBEVENT_VERSION_NUMBER >> 24)
#define LIBEVENT_VERSION_MINOR ((LIBEVENT_VERSION_NUMBER >> 16) & 0xFF)
#define LIBEVENT_VERSION_REL ((LIBEVENT_VERSION_NUMBER >> 8) & 0xFF)
#else
// assume latest version 1 series
#define LIBEVENT_VERSION_MAJOR 1
#define LIBEVENT_VERSION_MINOR 14
#define LIBEVENT_VERSION_REL 13
#define LIBEVENT_VERSION_NUMBER \
((LIBEVENT_VERSION_MAJOR << 24) | (LIBEVENT_VERSION_MINOR << 16) | (LIBEVENT_VERSION_REL << 8))
#endif
#if LIBEVENT_VERSION_NUMBER < 0x02000000
typedef THRIFT_SOCKET evutil_socket_t;
#endif
错误原因分析
根据提示这是个语法错误:
1、重名问题,造成了重复定义
2、在相关的定义后面缺少分号“;”,导致语法错误
3、 libevent版本定义问题 在头文件中加入正确的定义亦可,比如在自己的头文件中加入
#ifndef LIBEVENT_VERSION_NUMBER
#define #ifdef LIBEVENT_VERSION_NUMBER 0x02100000
#endif
没有找到语法的源头,暂时先用这种方式解决一下燃眉之急。