【问题标题】:C++ SAXParser Error with XercesXerces 的 C++ SAXParser 错误
【发布时间】:2014-12-11 21:55:50
【问题描述】:

一位外部顾问为我们编写了一个读取和解析一些 XML 文件的 C++ 程序。他使用的是旧版本的 Xerces,我不得不针对新版本的 Xerces 重新编译它,现在我遇到了运行时错误。

这是导致错误的代码sn-p

try
{
    // Instantiate the Xerces DOM parser
    parser = new SAXParser();
    if ( parser == NULL ) {
        fverbose ( AFCCB2MMLAdapter::logFile, "ERROR: Could not create Xerces SAX Parser\n" );
        return NULL;
    }
}
catch (const SAXParseException& toCatch) {
    char* message = XMLString::transcode(toCatch.getMessage());
    fverbose ( AFCCB2MMLAdapter::logFile, message );            
    return NULL;
}   
catch (...)
{
    fverbose ( AFCCB2MMLAdapter::logFile, "Error in SAXParser.\n" );
    return NULL;
}

在 C++ 项目中,我已经修改了 Linker 依赖,所以它是针对新版本的:

xerces-c_3.lib

我已将 xerces DLL 与我的 EXE 放在同一个文件夹中,但 DLL 的命名与 LIB 不同:

xerces-c_3_1.dll

在这一点上,我有点难过。我无法弄清楚实际的错误消息是什么,因为 catch (...) 块似乎正在捕获错误,但我对 C++ 的了解还不够,无法弄清楚如何获得错误。

有什么想法吗?

谢谢, 凯文

【问题讨论】:

    标签: c++ sax xerces


    【解决方案1】:

    我发现了这个问题。此代码是从旧版本的 xerces 移植而来的,旧版本不需要调用初始化例程。新版本确实需要这个调用,所以我添加了它,现在一切似乎都正常了!

    谢谢, 凯文

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      相关资源
      最近更新 更多