【发布时间】: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++ 的了解还不够,无法弄清楚如何获得错误。
有什么想法吗?
谢谢, 凯文
【问题讨论】: