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接收中,引用这个包装类,这样就避免了在头文件中的混合引用导致命名冲突的问题,隔离了两个冲突的定义。

原文地址:https://www.cnblogs.com/William_Fire/p/1638259.html