VS2019+Qt解析XML文件在doc.setContent(&file)处报错

VS2019+Qt解析XML文件在doc.setContent处报错

犯了一个很低级的错误,记录一下过程。

很早之前建立了一个Qt工程。现在要添加一个使用QDom类解析xml文件的功能,总是在doc.setContent(&file)这句出错,且没有任何报错信息。相关C++代码如下:

QString error;
int line, column;
if (doc.setContent(&file, &error, &line, &column)) {
    qDebug() << doc.toString(4);
}
else {
    qDebug() << "Error:" << error << "in line " << line << "column" << column;
}
file.close();

doc.setContent(&file, &error, &line, &column)时,显示Critical error detected c0000374

第一反应是xml文件编写有误,比如该空格的地方没空格、输入了中文标点符号或者tag的两侧不一致。
在反复确认了xml文件无误后,stackoverflow搜索说是不能用相对路径,必须用绝对路径… 又试了一通绝对路径,无用。

新建一个工程,用同样的代码运行,没有报错。仔细对比,发现新建工程时,我添加了XML类库
VS2019+Qt解析XML文件在doc.setContent(&file)处报错_第1张图片
而原工程是没有加的!

至此,在C/C++包含目录添加$(QTDIR)\include\QtXml,在链接器添加Qt5Xmld.lib【Debug模式下】,Qt5Xml.lib【Release模式下】,运行成功!

最后我发现,如果是xml文件编写有误,上述程序是可以定位error位置的。像这种直接报Fatal error/Critical error或者无法解析的外部符号 __declspec(dllimport) public: __cdecl,大概率是lib文件链接错误而非代码问题,需要检查环境是否配置正确。

一个简单的问题啰嗦了很久… 主要是告诫自己遇到网上没有解决方案的问题一定要多思考,多想一些揭露问题的方法,由果溯因!

你可能感兴趣的:(常用工具,qt,xml,visual,studio,c++)