Qt(Mingw环境)中编译和导入QJSon库

之前尝试在QJSon的网站和其他地方下载的QJSon库,进行编译,始终无法生成正确的可供MingW使用的库文件。

因此,在Google、百度、Bing之外我选择了一款不常用的搜索引擎:Duckduckgo,链接:

http://duckduckgo.com/

经过输入关键词“Qt QJSon”之后,找到了NOKIA的一篇文档,在此缅怀一下,昔日的巨人,并祝福它可以振作起来。附上链接:

http://projects.developer.nokia.com/QJson/browser

 

复制图中高亮部分的链接到剪切板,

之后在你的本地磁盘创建一个文件夹:

例如本人使用:F:\softwares\YunSave\Project\QJSon其中QJSon为创建的文件夹,

在这个文件夹中,启动TortoiseSVN的检出:

 

输入上面的地址,进行检出。会得到相应的源代码以及QJSon的脱机文档。如下图所示:

 

注意:全新检出的工程中是不包含上图中的QJSon.pro工程文件的,因此我们可以手动创建一个QJSon.pro文件,文件中加入如下工程代码:

 

TEMPLATE = lib

TARGET = 

DEPENDPATH += .

INCLUDEPATH += .

include(./json.pri)

LIBS += -lws2_32

 

启动QtCreator,导入上面的工程:

 

此时,请选择启动编译的“发布”选项:

 

设置完成之后,既可以选择“运行”。运行完成:

 

 

之后找到上图中的release文件夹:

release文件夹里面的libQJSon.a放到<Qt dir>\lib 目录中,例如本人将它放在了:

D:\QtSDK\Desktop\Qt\4.8.1\mingw\lib 目录中,

再在release文件夹里面找到QJSon.dll文件,将它放到<Qt dir>\bin目录中,本人放在了:

D:\QtSDK\Desktop\Qt\4.8.1\mingw\bin目录中。


接下来,找到<Qt dir>\include目录,我本人可能要找到:

D:\QtSDK\Desktop\Qt\4.8.1\mingw\include这个目录,

在这个include目录中创建一个名为QJSon的文件夹,然后将之前检出的代码目录(上面提到的F:\softwares\YunSave\Project\QJSon)中的所有头文件(*.h*.hh)都拷贝到新创建的

D:\QtSDK\Desktop\Qt\4.8.1\mingw\include目录中。

至此,外部库(外裤,呵呵)的导入已经完成。

 

接下来我们可以试着写个程序来测试一番了!

 

创建一个Qt控制台工程:

工程名例如QJSonTest

打开你的QJSonTest.pro文件,并在最后加入一行内容:“LIBS += -lqjson

完了,可以编写main.cpp进行测试,代码如下:

#include <QtCore/QCoreApplication>

#include <QVariant>

#include <QDebug>

#include <QJSon/qjson.h>

#include <QJSon/serializer.h>

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

    QJson::QJson parser(&a);

    bool ok;

QString json = "{\"encoding\":\"UTF-8\", \"plug-ins\":[\"python\",\"c++\",\"ruby\"], \"indent\":{ \"length\":3, \"use_space\":true }}"; //!< 注意没有回车

 

    QVariantMap result = parser.parse(json.toAscii(),&ok).toMap();

    if (!ok)

    {

       qDebug("An error occurred during parsing");

       return 0;

}

 

    qDebug() << "encoding:" << result["encoding"].toString();

    qDebug() << "plugins:";

    foreach (QVariant plugin, result["plug-ins"].toList())

       qDebug() << "\t-" << plugin.toString();

    QVariantMap nestedMap = result["indent"].toMap();

    qDebug() << "length:" << nestedMap["length"].toInt();

    qDebug() << "use_space:" << nestedMap["use_space"].toBool();

    return a.exec();

}

PS:打开你的QJSonTest.pro文件,并在最后加入一行内容:“LIBS += -lqjson”这一步是尤为重要的。

 

原出处:http://hi.baidu.com/imtoby/item/02cc71572376ef0ce7c4a556#713670-baidu-1-26095-a19db458d50b3e9d45067067b6ce7d52

posted @ 2013-03-23 23:53  RockyF  阅读(1559)  评论(0)    收藏  举报