2011-05-05 3 views
1

주장 오류 :의 Xerces-C I 다운로드 및 리눅스에서의 Xerces-C를 구축

Linux xxxx 2.6.24.7-server-3mnb #1 SMP Wed Sep 9 16:34:18 EDT 2009 x86_64 Intel(R) Xeon(R) CPU   3065 @ 2.33GHz GNU/Linux 

간단한 프로그램 작성 :

#include <xercesc/sax2/XMLReaderFactory.hpp> 
#include <xercesc/sax2/SAX2XMLReader.hpp> 
#include <xercesc/sax2/DefaultHandler.hpp> 
#include <xercesc/util/XMLUni.hpp> 
//#include <xercesc/validators/common/Grammar.hpp> 

    XERCES_CPP_NAMESPACE_USE; 

int main(int argC, char *argv[]) 
{ 
    // DefaultHandler handler; 
    SAX2XMLReader *parser = XMLReaderFactory::createXMLReader(); 
    delete parser; 
    return 0; 
} 

그것을 컴파일 :

g++ -lcurl -o xtest test.cpp /usr/local/lib/libxerces-c.a 

성공적으로 컴파일 실행하고 이것이 내가 얻은 것입니다 :

./xtest 
xtest: xercesc/util/XMemory.cpp:63: static void* xercesc_3_1::XMemory::operator new(size_t, xercesc_3_1::MemoryManager*): Assertion `manager != 0' failed. 
Aborted (core dumped) 

누구나 비슷한 경험을했거나 성공적으로 구축하고이 라이브러리를 사용 했습니까? 그것은 진짜 고통이되고 있으며 분명히 네임 스페이스를 지원하는 여러 스키마에 대해 XML 문서의 유효성을 올바르게 검사하는 것은 Linux 용으로 유일한 것입니다 (또는 무엇입니까?)

답변

2

xerces 기능을 사용하기 전에 XMLPlatformUtils::Initialize에 전화하는 것을 잊은 것 같습니다.

클라이언트 코드에서 초기화를 먼저 호출해야합니다.

또한, 프로그램의 마지막에 xerces가 완료되면 XMLPlatformUtils::Terminate()을 잊지 마세요.

종료 호출은 파서가 종료되기 전에 동적으로로드하는 것을 돕거나 누수 감지기의 가짜보고를 피하기 위해 현재 선택적입니다.

AFAIR을 초기화하지 못하면 나열한 오류가 발생합니다.

관련 문제