QtCreator动态编译jsoncpp完美支持x86和arm平台
如果是做嵌入式开发。 在Qt下支持JSon最好的办法,可能不是采用qjson这个库。QJson这个库的实例只提供了x86环境下的编译方法。
|
Installing QJson QJson requires: For Unix/Linux/Mac: mkdir build Please report problems to: |
按照上面的办法,的确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平台的更多相关文章
- 【PC桌面软件的末日,手机移动端App称王】写在windows11支持安卓,macOS支持ios,龙芯支持x86和arm指令翻译
面对这场突如其来的变革,作为软件开发者,应该如何选择自己今后的发展方向?桌面软件开发领域还有前景吗? 起源 自从苹果发布m1处理器,让自家Mac支持IOS移动端app运行之后,彻底打破了移动端app和 ...
- 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 ...
- 关于cshtml中的js对动态编译支持的问题
问题:MVC4中支持对ViewBag.ViewDate等的动态编译,但是在js中对它的支持就是有问题.虽然是可以动态编译,但是动态编译之后,断点无法获取. $.getJSON("/api/A ...
- Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布
首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版 下载地址:http://qt.nokia.com/downloads ...
- 重写代码生成器支持模板(多层架构,MVC),多语言c#,java;支持mysql和sqlserver,动态编译
多年前用过李天平前辈的,自己改过,后来李老师做动软了,不给源码,修改不是很方便.加上我目前需要转java方向,于是决定自己搞.到目前为止花了整整一个星期了,看看目前的成果. 最后是代码工程文件,用c# ...
- JIT(动态编译)和AOT(静态编译)编译技术比较
Java 应用程序的性能经常成为开发社区中的讨论热点.因为该语言的设计初衷是使用解释的方式支持应用程序的可移植性目标,早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之类的编译语言.尽管 ...
- OpenCV:Debug和Release模式 && 静态和动态编译
1.Release和Debug的区别 Release版称为发行版,Debug版称为调试版. Debug中可以单步执行.跟踪等功能,但生成的可执行文件比较大,代码运行速度较慢.Release版运行速度较 ...
- 基于.net standard 的动态编译实现
在前文[基于.net core 微服务的另类实现]结尾处,提到了如何方便自动的生成微服务的客户端代理,使对于调用方透明,同时将枯燥的东西使用框架集成,以提高使用便捷性.在尝试了基于 Emit 中间语言 ...
- Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践
一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某 ...
随机推荐
- CodeBlocks 中fopen函数不支持命令 “r”
//codeblocks #include<stdio.h> #include<stdlib.h> void main(void) { FILE *fp=NULL; if((f ...
- P,NP,NPC,NPC-HARD
P: 能在多项式时间内解决的问题 NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题 NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducib ...
- 解决ListView和ScrollView同时使用时滑动的冲突问题
ScrollView外面包裹了一个ListView,解决其滑动冲突问题: 只需自定义ListView,命名MyListView: public class MyListView extends Lis ...
- x-code快捷键
关于xcode 可设偏好设置 command+,清空缓存 可设隐藏xcode command+h隐藏其它 command+option+h显示全部 可设退出xcode command+q 文件相关: ...
- 什么是FTP服务器
FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务. FTP的全称是File Transfer Protocol(文件传输协议).顾名思义,就是专门用来传输文件的协议.简单地 ...
- python异常处理[转]
#!/usr/bin/python import tracebacktry: 1/0#except Exception,e:# print traceback.format_exc() except ...
- Vmware vsphere webservice sdk 连接打开慢的问题
还在为VimService实例化速度慢的问题烦恼吗?这有一篇文章可以帮你解决问题,英文水平所限,就不翻译了,原文地址http://kb.vmware.com/selfservice/microsite ...
- 正则匹配<{$vcode}>变量
$title="<{t}>您的验证码是:<{/t}><{$vcode}>,<{t}>请在注册页输入验证码并完成注册:验证码<{$vcod ...
- linux下socket编程-进程间通信
一.什么是Socket Socket接口是TCP/IP网络通信的API,Socket接口定义了许多函数或例程,可以用它们来开发TCP/IP网络上的应用程序. Socket类型有两种:流式Socket ...
- 【日期-时间】Java中Calendar的使用
主要介绍了Calendar类的使用 输出 * 时间格式化 * 当前时间:2016-12-02 16:46:27.079 * * 转换:String-->Date-->Calendar * ...