我试图在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.
答案 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());
但是你可能会在修复这个错误后得到一些其他的链接器错误。