0

我正在尝试在 Linux 上使用 Qt 5.7 构建示例项目。以前,使用 Qt 5.4.2 构建了相同的项目,没有问题。当我尝试使用 Qt 5.7 时,出现以下错误:

undefined reference to `QJsonValue::toString() const'

我尝试使用Qt 维护工具安装 Qt5.7,还从 Qt 官方网站下载并使用 .run 文件安装它。当我对 qjsonvalue 运行定位时,我得到以下结果:

$ locate qjsonvalue
/opt/Qt/5.4/Src/qtbase/include/QtCore/qjsonvalue.h
/opt/Qt/5.4/Src/qtbase/src/corelib/json/qjsonvalue.cpp
/opt/Qt/5.4/Src/qtbase/src/corelib/json/qjsonvalue.h
/opt/Qt/5.4/android_armv7/include/QtCore/qjsonvalue.h
/opt/Qt/5.4/android_x86/include/QtCore/qjsonvalue.h
/opt/Qt/5.4/gcc_64/include/QtCore/qjsonvalue.h
/usr/include/qt5/QtCore/qjsonvalue.h
/usr/share/doc/qt5/qtcore/qjsonvalue-members.html
/usr/share/doc/qt5/qtcore/qjsonvalue.html

根据之前的结果,似乎我需要安装一些东西,因为 qjsonvalue.h/cpp 不在我的 Qt5.7 核心中。关于如何解决它的任何想法?需要安装其他东西吗?注意,当我启动 Qt 维护工具时,我收到一条警告消息,内容如下:

Your installation seems to be corrupted. Please consider re-installing from scratch.
4

1 回答 1

0

通过谷歌在这里找到了这个。我遇到过同样的问题。

API 从默认参数更改 为两个重载
QString QJsonValue::toString(const QString & defaultValue = QString()) const

QString QJsonValue::toString() const
QString QJsonValue::toString(const QString &defaultValue) const

您应该使用要支持的最旧版本的标头进行构建。但是,如果您只需要修复这个错误,您可以将呼叫从

QJsonValue someval;
QString str = someval.toString();

QString str = someval.toString(QString());

但是在修复这个错误之后,您可能会遇到其他一些链接器错误。

于 2017-10-25T10:07:28.927 回答