AMR开源编码jrtplib中与int系统重定义问题解决
弄了开源的amr的codec源码,还有开源的jrtplib,一起弄程序时发现在C++中提供系统重定义冲突了,
错误 61 error C2371: “int8_t”: 重定义;不同的基类型 stdint.h 27
经查发现,在stint.h中:
typedef signed char int8_t;
而在jrtlib中用了
typedef char int8_t;
两者其实差不多,但为了保险起见,不想合并两份定义,因为如果以后amr的codec升级或是jrtplib升级后,弄新的源码就无法重新编译了。
在rtp的接收类中是需要进行amr解码的,后来研究了一下,对amr的code进行重包装。建立了一个amr的包装类,在包装类的cpp中对amr的头文件进行引用,而在rtp接收中,引用这个包装类,这样就避免了在头文件中的混合引用导致命名冲突的问题,隔离了两个冲突的定义。