Rapidxml не компилируется в Visual Studio 2010. Что я делаю не так?

Я работаю над переключением синтаксических анализаторов 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‹>'

Это конец долгого дня кодирования, и на сегодня об этом. Вы, знающие люди, не знаете, что я делаю неправильно?


person bastibe    schedule 20.01.2011    source источник


Ответы (2)


Вот пример кода, который я использую, возможно, это поможет?

   #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() );
   }
person Jay    schedule 20.01.2011

Вот моя актуальная проблема:

В рамках некоторой отладки памяти я перегрузил new версией, которая не поддерживает размещение new. Тем не менее, rapidxml требует размещения new для работы, поэтому и возникли эти ошибки. О боже.

person bastibe    schedule 31.01.2011
comment
Спасибо, что поделились решением! - person kaalus; 25.01.2012