0

Linux で Qt 5.7 を使用してサンプル プロジェクトをビルドしようとしています。以前は、同じプロジェクトが Qt 5.4.2 で問題なくビルドされていました。Qt 5.7 で試してみると、次のエラーが発生します。

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

Qt Maintenance Toolを使用して Qt5.7をインストールしようとしましたが、Qt の公式サイトからダウンロードして .run ファイルを使用してインストールしました。locate を 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

Google経由でここに来ることがわかりました。同じ問題がありました。

API は、デフォルトの引数 から2 つのオーバーロードに変更されました。
QString QJsonValue::toString(const QString & defaultValue = QString()) const

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

サポートする最も古いバージョンのヘッダーを使用してビルドする必要があります。ただし、このエラーを 1 つだけ修正する必要がある場合は、呼び出しを次のように変更できます。

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

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

ただし、これを修正した後、おそらく別のリンカ エラーが発生するでしょう。

于 2017-10-25T10:07:28.927 に答える