外部顾问给我们写了一个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 ++项目中,我修改了链接器依赖项,因此它违反了新版本:
的xerces-c_3.lib
我已将xerces DLL放在与我的EXE相同的文件夹中,但DLL的名称与LIB不同:
的xerces-c_3_1.dll
此时,我有点难过。我无法弄清楚实际的错误消息是什么,因为catch(...)块似乎正在捕获错误,但我不太了解C ++以找出如何获得错误。< / p>
有什么想法吗?
谢谢, 凯文
答案 0 :(得分:0)
我想出了这个问题。此代码从较旧版本的xerces移植而旧版本不需要调用Initialization例程。新版本确实需要这个电话,所以我已经添加了它,现在一切似乎都在运作!
谢谢, 凯文