Rapidxml не компилируется в Visual Studio 2010. Что я делаю не так? - PullRequest
1 голос
/ 20 января 2011

Я работаю над переключением парсеров 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> с
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 <>', который компилируется

Это конец длинного дня кодирования, и это на сегодня. Есть ли у вас знающие люди какие-либо идеи, что я здесь делаю не так?

Ответы [ 2 ]

1 голос
/ 31 января 2011

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

Как часть отладки памяти, я перегружен новой версией, которая не поддерживает размещение новой. Тем не менее, rapidxml требует размещения новых для работы, так что именно отсюда эти ошибки. Боже мой.

1 голос
/ 20 января 2011

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

   #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() );
   }
...