如果是做嵌入式开发。 在Qt下支持JSon最好的办法,可能不是采用qjson这个库。QJson这个库的实例只提供了x86环境下的编译方法。

Installing QJson
--------------

QJson requires:
- Qt 4.0 or greater
- cmake 2.6 or greater

For Unix/Linux/Mac:

mkdir build
  cd build
  cmake -DCMAKE_INSTALL_PREFIX=_preferred_path_ ..
  make
  make install
  /sbin/ldconfig, if necessary

Please report problems to:
  https://lists.sourceforge.net/mailman/listinfo/qjson-devel

按照上面的办法,的确10分钟就可以搞定x86环境的Linux 程序了。但是,如果要把这个库移植到arm环境下,笔者花了好几个小时都没有任何进展。相信很多朋友也有类似的感觉。

经过实验,终于找到一个非常简单的办法了。可以很好的把JSon和QtCreator集成在一起了。

第1步:下载 jsoncpp-src-0.5.0.tar.gz 这个库文件。

下载地址:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2012年资料/2月/8日/QtCreator动态编译jsoncpp完美支持x86和arm平台/

解压后如图:

不要被这一堆文件吓到哦。

第2步:把我们要的东西从代码堆里整理出来。

(1) 随便找个地方建一个空文件夹叫json

(2)将include\json里面所有文件复制到 刚刚新建的json文件夹里(共8个文件,全部是.h的头文件)

(3)将src/lib_json里面的所有文件全部复制到json文件里,共8个文件

通过复制这些文件,就组成了我们所要的JSON库的全部源代码了。完整的文件清单见下面:

第3步: 打开QtCreator集成开发环境,新建一个新项目。

然后把我们刚刚准备好的JSON库,复制到你新建项目的同一目录下。

最后回到QtCreator开发环境,鼠标右键点击“添加现有文件”

打开JSON目录,选中全部文件。

点击“打开”。

至此JSON库的所有代码添加完毕。

对比哈,你的代码结构,和我一致吗? 如果一致,恭喜你!

第4步:编辑测试代码

在可视化界面上,添加一个“按钮”建立好信号槽。

按钮代码如下:

void Widget::on_btnTestJson_clicked()
{
    using namespace std;
    std::string strValue = "{\"学号\":\"20120207001\",\"姓名\":\"张无忌\",\"性别\":\"男\"}";
    Json::Reader reader;
    Json::Value value;
    if (reader.parse(strValue, value))
     {
        std::string out = value["学号"].asString();
        std::cout << out << std::endl;

out = value["姓名"].asString();
        std::cout << out << std::endl;

out = value["性别"].asString();
        std::cout << out << std::endl;
     }

}

运行效果如下:

更多JSON-CPP库的用法,请参考 json-cpp 的使用手册。

arm开发环境编译测试:

(1)首先检查你的arm环境和我的是否一致。

(2)切换工程编译模式

选择 Embed 4.5 Release 嵌入式开发环境编译器

(3)重新构建工程文件

重新构建完成。点击编译即可。

将编译好的程序文件copy到arm开发板上就可以运行了。

QtCreator动态编译jsoncpp完美支持x86和arm平台的更多相关文章

  1. 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译

    面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...

  2. Qt 5.6.0 动态编译(VS2013 x86 target xp openssl icu webkit)

    经历了多次延期后,在3月16号,Qt发布了5.6.0版本(全面支持高DPI无疑是一个亮点),从5.6.0版本开始,Qt直接移除了webkit模块,让webengine作为其替代选择,不过webengi ...

  3. 关于cshtml中的js对动态编译支持的问题

    问题:MVC4中支持对ViewBag.ViewDate等的动态编译,但是在js中对它的支持就是有问题.虽然是可以动态编译,但是动态编译之后,断点无法获取. $.getJSON("/api/A ...

  4. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布

    首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版 下载地址:http://qt.nokia.com/downloads ...

  5. 重写代码生成器支持模板(多层架构,MVC),多语言c#,java;支持mysql和sqlserver,动态编译

    多年前用过李天平前辈的,自己改过,后来李老师做动软了,不给源码,修改不是很方便.加上我目前需要转java方向,于是决定自己搞.到目前为止花了整整一个星期了,看看目前的成果. 最后是代码工程文件,用c# ...

  6. JIT(动态编译)和AOT(静态编译)编译技术比较

    Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...

  7. OpenCV:Debug和Release模式 && 静态和动态编译

    1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...

  8. 基于.net standard 的动态编译实现

    在前文[基于.net core 微服务的另类实现]结尾处,提到了如何方便自动的生成微服务的客户端代理,使对于调用方透明,同时将枯燥的东西使用框架集成,以提高使用便捷性.在尝试了基于 Emit 中间语言 ...

  9. Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践

    一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某 ...

随机推荐

  1. python数据结构与算法——图的广度优先和深度优先的算法

    根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 每次循环从队列弹出一个结点 将该节点的所有相连结点放入队列,并标记已被发现 通过队列,将迷宫路口所有的门打 ...

  2. 什么是JavaEE

    Java技术不仅是一门编程语言而且是一个平台.同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境.Java平台有很多种,很多的Jav ...

  3. MySql变量,

    http://blog.csdn.net/rdarda/article/details/7878836 1.变量的定义 在Mysql里面可以像我们写代码中一样定义变量来保持中间结果,看下面的格式: [ ...

  4. unity, 播放循环背景音乐注意事项

    循环背景音乐用wav格式,不要用mp3. 参考:http://answers.unity3d.com/questions/343057/how-do-i-make-unity-seamlessly-l ...

  5. SpringMVC学习系列(6) 之 数据验证

    在系列(4).(5)中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 —> 数据验证. 这里我们采用Hibernate-validator来进行验 ...

  6. Android学习笔记(一)

    活动(Actiity)是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用中可以包含零个或多个活动. 所有的自己写Activity都继承于Activity类.项目中的任何活动都应该改重写Ac ...

  7. UVA 247 电话圈(Floyd传递闭包+输出连通分量)

    电话圈 紫书P365 [题目链接]电话圈 [题目类型]Floyd传递闭包+输出连通分量 &题解: 原来floyd还可以这么用,再配合连通分量,简直牛逼. 我发现其实求联通分量也不难,就是for ...

  8. angular.js ngbind nghtml ngTemplate

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. IntelliJ IDEA使用记录

    一.快捷键 1. 生成main方法 在编写代码的时候直接输入psv就会看到一个psvm的提示,此时点击tab键一个main方法就写好了. psvm 也就是public static void main ...

  10. elasticsearch auto delete old indices

    定在crontab 每天执行 crontab -e * 2 * * * ~/autodelete.py Python 代码如下 #!/usr/bin/env python # encoding:utf ...