先前对“命名空间引用{}”的声明

时间:2018-09-03 12:57:12

标签: c++ libxml2

使用libxml2编译代码时遇到编译错误。

文件Reference.h已存在于我的代码中,并被许多其他文件使用:

Reference.h
namespace reference // BEGIN OF namespace reference
{

}

但是当我使用libxml2编译代码时遇到错误:

libxml2/libxml/SAX.h:116: error: 'void reference(void*, const xmlChar*)' redeclared as different kind of symbol

libxml2/libxml/SAX.h
XMLPUBFUN void XMLCALL reference (void *ctx,
       const xmlChar *name);

是否可以在不修改文件Reference.h的情况下解决此错误?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

基本上,禁用SAX.h。这是一个已弃用的接口,它不会费心地进行任何命名间隔或为其符号使用任何标准前缀。取而代之的是使用SAX2.h,它(除其他改进之外)在所有内容前都加上xmlSAX2

要在libxml2中保留已弃用的内容,请在运行configure时确保不要通过with_legacy选项。