2016-11-10 4 views
0

J'essaie de créer un exemple de projet en utilisant Qt 5.7 sur Linux. Auparavant, le même projet a été construit avec Qt 5.4.2 sans problèmes. Lorsque je tente avec Qt 5.7, je reçois les erreurs Suivis:Qt - référence non définie à QJsonValue :: toString

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

J'ai essayé d'installer Qt5.7 avec Maintenance Qt outil et également télécharger à partir du site officiel Qt et l'installer en utilisant le fichier .run. Quand je lance un LOCATE pour qjsonvalue j'obtenir les résultats de Suivis:

$ 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 

Selon les résultats précédents, semble que je dois installer quelque chose becuase qjsonvalue.h/cpp est pas dans mon cœur Qt5.7. Des idées sur la façon de le résoudre? Besoin d'installer autre chose? Comme note, quand je commence à Qt Maintenance Tool, je reçois un message d'alerte qui dit ce qui suit:

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

Répondre

0

trouvé ce comming ici via google. J'ai eu le même problème.

L'API a changé à partir d'un argument par défaut
QString QJsonValue::toString(const QString & defaultValue = QString()) const
à two overloads.
QString QJsonValue::toString() const
QString QJsonValue::toString(const QString &defaultValue) const

Vous devez construire avec les en-têtes de la plus ancienne version que vous voulez soutenir. Mais si vous avez juste besoin de celui-ci erreur fixe que vous pouvez simplement changer l'appel de

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

à

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

Mais vous obtiendrez probablement une autre erreur de liens à la suite de la fixation celui-ci.