sax — C ++ SAXParser Ошибка с Xerces

Внешний консультант написал нам программу на C ++, которая читает и анализирует некоторые XML-файлы. Он использовал более старую версию Xerces, и мне пришлось перекомпилировать ее с более новой версией Xerces, и теперь я получаю ошибку во время выполнения.

Вот фрагмент кода, который вызывает ошибку

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

И я поместил DLL-файл xerces в ту же папку, что и мой EXE-файл, но имя DLL-файла называется не так, как в LIB:

Xerces-c_3_1.dll

На данный момент, я немного озадачен. Я не могу понять, что именно является сообщением об ошибке, потому что блок catch (…), кажется, перехватывает ошибку, но я недостаточно хорошо знаю C ++, чтобы понять, как получить ошибку.

Есть идеи?

Спасибо,
Kevin

0

Решение

Я понял эту проблему. Этот код был перенесен из более старой версии xerces, и более старая версия не требовала вызова подпрограммы инициализации. Новая версия требует этот вызов, поэтому я добавил его, и теперь все работает!

Спасибо,
Kevin

0

Другие решения


По вопросам рекламы [email protected]