2011-05-05 81 views
1

我已经下载和内置的Xerces-C在Linux上:的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) 

任何人都有类似的经验/成功地建立和使用这个库...怎么样?这显然是一个真正的痛苦,显然它是唯一的一个Linux正确验证一个XML文档针对多个模式的命名空间支持(或是否?)

回答

2

看起来你忘记在使用任何xerces功能之前调用XMLPlatformUtils::Initialize

必须首先在任何客户端代码中调用初始化。

此外,不要忘记XMLPlatformUtils::Terminate()一旦你完成了xerces,即在程序结束时。

终止呼叫目前是可选的,以帮助那些动态加载解析器在退出前清理,或避免来自泄漏检测器的虚假报告。

AFAIR无法启动xerces会导致您列出的错误。