0

An external consultant wrote us a C++ program that reads and parses some XML files. He used an older version of Xerces and I've had to recompile it against a newer version of Xerces and now I'm getting a run-time error.

Here is the code snippet that is causing the error

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;
}

In the C++ project, I've modified the Linker dependency so it is against the new version:

xerces-c_3.lib

And I've put the xerces DLL in the same folder as my EXE but the DLL is named differently than the LIB:

xerces-c_3_1.dll

At this point, I'm kind of stumped. I can't figure out what the actual error message is because the catch (...) block seems to be catching the error but I don't know C++ well enough to figure out how to get the error.

Any ideas?

Thanks, Kevin

kevin
  • 65
  • 10

1 Answers1

0

I figured out this issue. This code was ported from an older version of xerces and the older version didn't require a call to an Initialization routine. The new version does require this call so I've added it and everything seems to be working now!

Thanks, Kevin

kevin
  • 65
  • 10