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)某 ...
随机推荐
- An internal error occured during :"C/C++" . java.lang.NullPointerException
用eclipse 导入cocos2d项目的时候报了这个错,导致项目在eclipse 里面是空的,反复导入也不行. 解决办法,把其他正常项目里面的proj.android目录下面的.cproject文件 ...
- 关于js判断鼠标移入元素的方向--解释
一开始我是这么想的,将待移入的元素分割四块,用mousemove获取第一次鼠标落入的区域来判断鼠标是从哪个方向进去的. 所以只要写个算法来判断鼠标的值落入该元素的区域就可以得出鼠标移入的方向,如下图: ...
- thinkphp 内置标签volist 控制换行
thinkphp 内置标签volist 控制换行 volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行 ...
- Oracle建表添加数据
- mysql登陆出现unknown database错误可能原因
输入了错误命令如 # mysql -u root -p test 然后客户端会出现需要输入命令的提示,即使输入正确出现错误提示 正确命令是 # mysql -u root -p
- Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法【转载】
摘自:http://www.cnblogs.com/douqiumiao/default.aspx?opt=msg Validation failed for one or more entities ...
- dbms_stats包更新、导出、导入、锁定统计信息
dbms_stats包问世以后,我们可通过一种新的方式来为CBO收集统计数据.目前,已经不再推荐使用老式的Analyze分析表和dbms_utility方法来生成CBO统计数据.dbms_stats能 ...
- Navicat(服务器对象) -2之MySQL 或 MariaDB 对象
MySQL 或 MariaDB 对象 http://www.navicat.com.cn/manual/online_manual/cn/navicat/win_manual/index.html 要 ...
- 在ios8中做的屏幕旋转功能
http://www.cnblogs.com/smileEvday/archive/2013/04/24/Rotate2.html 思路出自这篇博主的文章. 直接上代码 -(void)willAnim ...
- Quartz.NET管理周期性任务
Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...