いくつかの背景
元々は Mac でプロジェクトを作成していましたが、今は Linux マシンを同じプロジェクトに使用したいと考えています。設定フォルダーは以下に依存していました。
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonParseError>
これらは、SL5 の qt-devel インストールには含まれていませんでした。QT v4 を使用しています。そこで、Sourceforge から QJsonをダウンロードし、cmake を使用してインストールしました。出力例:
--Installing: /usr/include/qjson/parser.h
--Installing /usr/lib/libqjson.so
それはいいです。だから私は私の.proに追加しました:
LIBS += -L/usr/lib/ -lqjson
INCLUDEPATH += /usr/include/qjson/
実際の問題
ここで、古いsettings.cppファイルを変換して、このわずかに新しい方法でデータを解析するタスクがあります。
{
"HwDescription": {
"ConnectionsName": "file://settings/connections.xml",
"ShelveId": 0,
"BeBoard": {
"Id": 10,
"connectionId": "board0",
"boardType": "GLIB"
}, // + more boring stuff
したがって、以前の作業方法で行ったのと同じように、上記の json を QString に入れ、指示に従って解析を試みます。私は使用しました:#include <qjson/parser.h>ここで前方宣言は必要ないと思います。
QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse (raw_json, &ok).toMap(); //where raw_json is a QString - this is where I get an error
if (!ok)
{
qFatal("An error occured during parsing");
exit (1);
}
私が得るエラー:
エラー: 'Qjson::Parser:parse(QString&, bool) を呼び出す一致する関数がありません
インクルードを削除すると、エラーは次のように表示されます。
QJson が宣言されていません
したがって、少なくともライブラリを見つける必要があります。何がうまくいかないかについてのアイデアはありますか?