Qt - 对QJsonValue :: toString的未定义引用

时间:2016-11-10 10:22:33

标签: qt qjson

我试图在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.

1 个答案:

答案 0 :(得分:0)

通过谷歌发现这里来了。我遇到过同样的问题。

API已从默认参数
更改 QString QJsonValue::toString(const QString & defaultValue = QString()) const
two overloads QString QJsonValue::toString() const
QString QJsonValue::toString(const QString &defaultValue) const

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

更改呼叫
QJsonValue someval;
QString str = someval.toString();

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

但是你可能会在修复这个错误后得到一些其他的链接器错误。