2011-05-05 84 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會導致您列出的錯誤。