使用两个不同的SDK 结构体命名冲突问题
项目中,使用了第三方 播发器SDK、 直播推流SDK
将其添加到工程中,进行编译时,发现结构体重定义,原因两个SDK定义了同名的结构体
播放器SDK
#define NELP_MASK_TYPE(_name, _type) struct stru_##_name##_type {int iUnused; } *
/***NELP 函数返回值***/
typedef NELP_MASK_TYPE(_RET, int) NELP_RET;
直播SDK定义
#define NLSS_MASK_TYPE(_name, _type) struct stru_##_name##_type {int iUnused; } *
/***NLSS 函数返回值***/
typedef NLSS_MASK_TYPE(_RET, int) NLSS_RET;
编译提示: error C2011: 'stru__RETint' : 'struct' type redefinition
可以看到,定义了同名的结构体
原因:
将SDK封装为C++接口时,是这么添加播放器SDK头文件的
播放器SDK
直播SDK
这样 都在同一个命名空间中,所以出现了冲突
解决:
将其置入命名空间下就可以了