c++ - 'namespace reference { }' 的先前声明

标签 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 的情况下解决此错误?

感谢您的帮助。

最佳答案

基本上,禁用SAX.h。这是一个已弃用的接口(interface),它不费心做任何命名空间或为其符号使用任何标准前缀。相反,请使用 SAX2.h,它(除了其他改进之外)为所有内容添加 xmlSAX2 前缀。

为了将已弃用的内容排除在 libxml2 之外,当您运行 configure 时,请确保不要传递 with_legacy 选项。

关于c++ - 'namespace reference { }' 的先前声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150259/

相关文章:

c++ - MFC中可重用的后台线程

php - 为什么 PHP 的 DOMDocument 从处理指令节点中删除前导空格? (<?php?>)

ruby - RVM 不适用于 1.9.1 但适用于 1.8.6 和 1.8.7

c++ - 找不到 C++ 类中的静态 vector

c++ - 有没有办法在模板类中处理可变数量的参数?

c++ - iOS Vuforia从后台进入后出现错误

memory-management - libXML:检查节点是否已经取消链接并释放

iPhone 开发 - XMLParser 与 libxml2 与 TouchXML

ruby - 在 Centos 6.2 上使用 RVM 1.9.3 安装 nokogiri 时遇到问题

c++ - 为什么我不能 std::move std::unique_ptrs between std::sets?