DuiMini准备用rapidxml解析xml界面配置,zlib解压文件,本来两个都是非常好的库,然而……

WTF

编译报错:XXX语法错误:“” 还有一堆乱七八糟的东西……什么鬼啊,一开始我以为是我使用的问题,然而和网上教程对比了一下没有什么问题啊,试了半天发现这个错误极其诡异,有时候报有时候不报,然而我要用的地方它就报了……看错误信息貌似是和zlib存在冲突(调整头文件引用顺序也可看出),百毒搜搜没什么东西,心态崩了……

问题出现

回去后用“不存在”搜索引擎一查,果然百毒还是百毒,歪果仁早就遇到过了
1
这就是一个冲突的BUG,两个都有一个叫alloc_func的函数,rapidxml还好有命名空间保护,然而zlib不上路子直接暴露在外面……于是神奇的编译器就会在模板实例化时把zlib的func当成rapidxml的了……

解决方法

网上的方法非常暴力简单,搜索zlib或rapidxml中的alloc_func,改成alloc_func1或者其他的就行了……
有兴趣的朋友可以试试给zlib加命名空间。

最后还是要说,真TM坑……