场景
添加海康,宇视SDK对接的头文件和库文件,编译出错提示error C2059: 语法错误:“常量”。显示宇视SDK头文件NetDEVSDK.h中宏定义异常
typedef enum tagNETDEV_PASSIVEDECODE_CMD
{
PASSIVE_DEC_PAUSE = 1, /* 被动解码暂停(仅文件流有效) */
PASSIVE_DEC_RESUME = 2, /* 恢复被动解码(仅文件流有效) */
PASSIVE_DEC_FAST = 3, /* 快速被动解码(仅文件流有效) */
PASSIVE_DEC_SLOW = 4, /* 慢速被动解码(仅文件流有效) */
PASSIVE_DEC_NORMAL = 5, /* 正常被动解码(仅文件流有效) */
PASSIVE_DEC_ONEBYONE = 6, /* 被动解码单帧播放(保留) */
PASSIVE_DEC_AUDIO_ON = 7, /* 音频开启 */
PASSIVE_DEC_AUDIO_OFF = 8, /* 音频关闭 */
PASSIVE_DEC_RESETBUFFER = 9 /* 清空缓冲区 */
}NETDEV_PASSIVEDECODE_CMD_E;
NetDEVSDK.h(5082): error C2059: 语法错误:“常量”
NetDEVSDK.h(5091): error C2143: 语法错误: 缺少“;”(在“}”的前面)
鼠标放在PASSIVE_DEC_PAUSE,看到错误提示:#define PASSIVE_DEC_PAUSE 1
排查过程
在Notepad++对整个工程目录进行宏定义搜索PASSIVE_DEC_PAUSE,发现在海康的头文件中已有定义HCNetSDK.h
#define PASSIVE_DEC_PAUSE 1 /*被动解码暂停(仅文件流有效)*/
#define PASSIVE_DEC_RESUME 2 /*恢复被动解码(仅文件流有效)*/
#define PASSIVE_DEC_FAST 3 /*快速被动解码(仅文件流有效)*/
#define PASSIVE_DEC_SLOW 4 /*慢速被动解码(仅文件流有效)*/
#define PASSIVE_DEC_NORMAL 5 /*正常被动解码(仅文件流有效)*/
#define PASSIVE_DEC_ONEBYONE 6 /*被动解码单帧播放(保留)*/
#define PASSIVE_DEC_AUDIO_ON 7 /*音频开启*/
#define PASSIVE_DEC_AUDIO_OFF 8 /*音频关闭*/
#define PASSIVE_DEC_RESETBUFFER 9 /*清空缓冲区*/
所以才会出现上面的提示错误
解决方案
在宇视SDK头文件中没有搜索到NETDEV_PASSIVEDECODE_CMD_E宏定义的使用,因此,直接注释掉整个宏定义解决问题