2011-09-05 2 views
2

Visual Studio 2005로 컴파일 된 Windows CE 6.0에서 RapidXml 1.13을 실행하려고하면 매우 이상한 문제가 발생합니다. 실행하려면 :Windows CE 6.0/Windows Mobile/Windows Embedded Compact에서 RapidXml을 사용하는 이상한 예외

#include <rapidxml.hpp> 
using namespace rapidxml; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    xml_document<char> doc; 
    return 0; 
} 

0 오류 및 0 경고 (W3에서)로 잘 컴파일됩니다. RapidXml_Test.exe에서 0x000110d4에서

첫 번째 예외 : 가 0xc0000005 : 액세스 위반 쓰기 위치 0x0001fb48 내가 실행하거나 프로그램을 디버깅 할 때 그러나, 나는 액세스 위반 예외를 얻을.

디버거는 다음 원인으로이 라인 (rapidxml.hpp에서 1366) (열린 중괄호)를 가리키는

가 :

template<class Ch = char> 
    class xml_document: public xml_node<Ch>, public memory_pool<Ch> 
    { 

    public: 

     //! Constructs empty XML document 
     xml_document() 
      : xml_node<Ch>(node_document) 
------->{ 
     } 
... 

사람이 어떤 단서가있는 경우는 문제가 될 수있는 것을 나는 크게 좋겠 고맙습니다. 빌드와 런타임 환경에서 작동하는 코드가 훨씬 복잡해 지므로 아무 것도 의심하지 않습니다. 나는 그것이 프로젝트 설정이 아니라고 상당히 확신한다. 이 시점에서 RapidXml의 템플릿 사용은 Windows CE VC++ 컴파일러를 혼란스럽게합니다. 나는 그 밖에 무엇이 될 수 있는지 모른다.

미리 감사드립니다.

+1

도'xml_document <> doc;'faile (기본값은'char')입니까? 어때?'xml_document doc;'? CE는 유니 코드로 많이 편향되어 있으므로 템플릿의 내용이 어딘가에 확장 될지 궁금합니다. – ctacke

+0

그럴 수 있습니다. 나는 그것을 알아. 업데이트 된 질문. 감사! –

답변

3

해결책을 찾았습니다. RapidXML은로드 된 후에 자체 메모리 풀을 할당합니다. 문제는 스택에 스택을 할당하고 스택 오버플로가 발생했다는 것입니다. (여기서 첫 번째 질문에 대한 문제는 실제로 스택 오버 플로우가 발생했다는 점이 얼마나 우연인지). 어쨌든, 수영장의 크기를 줄이는 것은 내 문제를 해결했습니다.

관련 문제