rtti:RTTI(Run-Time Type Identification),通过运行时类型识别能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型(引用百度解释)。
在项目中有用到webrtc的库和OpenCV库,两个开源项目的库均为自己编译。在导入到项目中编译时,如果在CMakeLists.txt中配置了-fno-rtti时,OpenCV库无法正常链接。如果换成-frtti参数时,则webrtc库无法正常链接。
从此情况来看,有两种方案来解决该冲突:
1.编译OpenCV的时候,加入-fno-rtti
参数
2.编译webrtc的时候,加入-frtti
参数
对于方案1,我试过,以失败告终。
对于方案2,看了一下webrtc的官网解释,编译时默认的不启用rtti
功能的,即使用-fno-rtti
参数。但也可以通过在gn命令中加入 use_rtti=true
参数来开启。编译比较耗时(全平台的android库),但好在重新编译后解决了两个库之前的冲突。