1

我正在我们的代码库中将 XML 解析器从 TinyXml 切换到 RapidXml。

但是,RapidXml 似乎无法与 Visual Studio 2010 一起编译。

基本上,在我正在做的头文件中

#define RAPIDXML_NO_EXCEPTIONS
#include "RapidXml/rapidxml.hpp"
using namespace rapidxml;

并且在实施中

xml_document<> xmlDoc;
xmlDoc.parse<0>(filestring);

就在那里,在我的第二行代码中,Visual Studio 说

c:\users\name\development\rapidxml\rapidxml.hpp(420):错误 C2061:语法错误:标识符“内存”
1> c:\users\name\development\rapidxml\rapidxml.hpp(418):编译时类模板成员函数 'rapidxml::xml_node<> *rapidxml::memory_pool::allocate_node(rapidxml::node_type,const Ch *,const Ch *,size_t,size_t)'
1> with
1> [
1> Ch=char
1 > ]
1> c:\users\name\development\rapidxml\rapidxml.hpp(1359) : 请参阅正在编译的类模板实例化 'rapidxml::memory_pool'
1> 与
1> [
1> Ch=char
1> ]
1> c:\users\name\development\xmlresource.cpp(70) : 请参阅正在编译的类模板实例化 'rapidxml::xml_document<>' 的引用

这是漫长的编码日的结束,这就是今天的内容。你们那里知识渊博的人知道我在这里做错了什么吗?

4

2 回答 2

1

这是我使用的一些示例代码,也许会有所帮助?

   #include <rapidxml.hpp>

   rapidxml::xml_document<> doc;
   doc.parse<rapidxml::parse_no_data_nodes | rapidxml::parse_trim_whitespace>( buffer );

   rapidxml::xml_node<>* root;
   root = doc.first_node();
   if ( root )
   {
      rapidxml::xml_node<>* cur_node;

      cur_node = root->first_node( "SessionLoginDeadline" );
      if ( cur_node )
         SessionLoginDeadline = cur_node->value();

      cur_node = root->first_node( "Port" );
      if ( cur_node )
         Port = stringTo<unsigned short>( cur_node->value() );

      cur_node = root->first_node( "MaximumAllowedClients" );
      if ( cur_node )
         MaximumAllowedClients = stringTo<unsigned short>( cur_node->value() );
   }
于 2011-01-20T17:44:53.520 回答
1

这是我的实际问题:

作为一些内存调试的一部分,我使用不支持放置 new 的版本重载了 new。但是,rapidxml 确实需要放置 new 才能工作,所以这就是这些错误的来源。天啊。

于 2011-01-31T11:31:47.160 回答