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);

コードの 2 行目で、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> with
1> [
1> Ch=char
1> ]
1> c:\users\name\development\xmlresource.cpp(70) : コンパイル中のクラス テンプレート インスタンス化 'rapidxml::xml_document<>' への参照を参照してください

長いコーディングの 1 日が終わり、今日はこれで終わりです。そこにいる知識豊富な人々は、私がここで間違っていることを知っていますか?

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 を機能させるには新しい配置が必要なため、これらのエラーの原因はそこにあります。なんてこった。

于 2011-01-31T11:31:47.160 に答える