Qt学习日记篇-Qt中使用Curl和jsonCpp

1.Qt中安装并使用jsonCPP库

 

1.1  官网下载。http://sourceforge.net/projects/jsoncpp/    解压文件得到 jsoncpp-src-0.5.0 文件夹。

1.2   在jsoncpp-src-0.5.0->makefiles->vs71文件夹下找到jsoncpp.sln文件,用 VisualStdio 打开,有三个工程,

   对其中lib_json这个工程进行编译生成,具体过程见下图

    (可以生成两种库,debug库和release库,二者不同,工程debug的时候需要debug库,release时需要release库)。

 

 

 

 

1.3   生成成功后会在D:\jsonlib\dist\jsoncpp-src-0.5.0\build\vs71文件夹下得到json_vc71_libmtd.lib文件

     (debug版本,这里出现release的原因是我在VS中将Debug改为release重新生成了一次)

 

 

 

 

 1.4   在桌面新建一个文件夹,英文命名为JSONCPPLIB,用于存储一个库文件(.lib文件)和一个包含文件(include文件

           先将D:\jsonlib\dist\jsoncpp-src-0.5.0目录下的include文件夹全部复制在桌面新建文件夹中 (包括文件夹)

            将 D:\jsonlib\dist\jsoncpp-src-0.5.0\build\vs71\debug\lib_json目录下的后缀为.lib的文件复制到桌面新建文件夹中

 

 

 

1.5   在Qt中新建一个工程,用于测试程序,打开Qt工程文件(.pro文件)

        在其中添加如下红框中的代码

            第一行:添加include 路径代码,也就是刚刚桌面新建文件的include 文件夹路径,注意反斜杠    

              INCLUDEPATH += D:/jsonlib/dist/jsoncpp-src-0.5.0/include/json

       第二行:添加Lib文件代码,也就是桌面新建文件夹的.lib文件路径   

              LIBS+=-LD:/jsonlib/dist/jsoncpp-src-0.5.0/build/vs71/debug/lib_json/json_vc71_libmtd

 

 

 

 1.6  至此,设置完成,适当写一些测试代码测试

 

 

 

 

2.Qt使用Curl

2.1  请先看下面这个博客,利用VS编译生成Curl库文件  链接:http://blog.csdn.net/cnicfhnui/article/details/106937886

2.2  上面的博客完成后,相信您得到了一个lib文件夹(解压目录下的builds文件往里面翻)和一个include 文件夹

 

 

 -------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

2.3  同理,桌面再建一个文件夹,将上面的include文件夹和lib里的.lib文件装进去

2.4  Qt在工程文件里添加,同上面添加jsonCPP一样

 

2.5  Qt测试

 

 

 

 

 

 

 

 

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 新增与删除用户组groupadd,groupmod,groupdel,gpasswd

    groupadd[root@study~]#groupadd[-ggid][-r]组名复制选项与参数:-g:后面接某个特定的GID,用来直接给予某个GID~-r:建立系统群组啦!与/etc/login.defs内的GID_MIN有关。新建一个群组,名称为wljsghq[root@study~]#groupaddwljsghq [root@study~]#grepwljsghq/etc/group/etc/gshadow /etc/group:wljsghq:x:1503: /etc/gshadow:wljsghq:!::复制群组的GID也是会由1000以上最大GID+1来决定!groupmod跟usermod类似的,这个指令仅是在进行group相关参数的修改而已。[root@study~]#groupmod[-ggid][-ngroup_name]群组名复制选项与参数:-g:修改既有的GID数字;-n:修改既有的组名将刚刚上个指令建立的wljsghq名称改为wljslmz,GID为201[root@study~]#groupmod-g201-nwljslmzwljsghq [root@

  • CVE-2021-22986 F5 BIG-IP/BIG-IQ RCE

    此漏洞允许未经身份验证的攻击者通过BIG-IP管理界面和自身IP地址对iControlREST接口进行网络访问,以执行任意系统命令,创建或删除文件以及禁用服务。此漏洞只能通过控制平面利用,而不能通过数据平面利用。剥削可能导致完全的系统危害。设备模式下的BIG-IP系统也容易受到攻击。CVE-2021-22986从补丁分析和测试来看,此漏洞似乎涉及某种身份验证绕过甚至SSRF。下面的完整上下文修补程序已对其行号进行了调整,以供在调试器中使用。RCE这是命令中的认证后根命令注入tar(1)修补过滤将应用于用户控制的taskState.filePath参数[snip] +privatestaticfinalPatternvalidFilePathChars=Pattern.compile("(^[a-zA-Z][a-zA-Z0-9_.\\-\\s()]*)\\.([tT][aA][rR]\\.[gG][zZ])$"); [snip] privatevoidvalidateGzipBundle(finalIAppBundleInstallTaskStatetaskStat

  • Android NDK生成及连接静态库与动态库的方法

    对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用。但是在某些情况下,我们需要借助C/C++来写JNI本地代码。比如,在使用跨平台的第三方库的时候;为了提升密集计算性能的时候(这种情况下往往还可能会直接使用汇编语言)。因此,这里我将为大家介绍如何给其它开发者创建可供使用的静态库或动态库。而应用开发者如何去连接这些生成的静态库或动态库。由于现在AndroidStudio已经比较成熟,因此以下描述将基于AndroidStudio的目录布局。在AndroidStudio的一个项目工程下,会有一个app文件夹,这个文件夹主要存放我们编写应用的所有代码以及相关其它资源。如果我们需要写JNI,那么就需要在这个目录下创建jni文件夹。jni文件夹里必须包含Android.mk文件、Application.mk文件以及你所要编译的源文件。下面我们先给出编译生成提供给第三方开发者使用的静态库与动态库的Android.mk文件内容:LOCAL_PATH:=$(callmy-dir) include$(CLEAR_VARS) #编译后生成的模块名,在Java端使用System

  • python第二十一课——str中的常用函数(重要)

    演示str中常用的一些函数: 1.join():将容器对象以某种特定的格式(字符串)进行拼接组合,最后以字符串的形式返回lt=['i','love','you','very','much'] str1='-'.join(lt) print(str1,type(str1)) print(str.join('*',lt)) print(''.join(lt)) #报错:需要显示的在第一个参数位置定义链接的格式(串) print(str.join(lt))复制2.rjust():将字符串数据以规定的长度进行存储,内容在右侧显示,如果长度不足,左侧补规定的字符 ljust():将字符串数据以规定的长度进行存储,内容在左侧显示,如果长度不足,右侧补规定的字符 center():将字符串数据以规定的长度进行存储,内容在中间显示,如果长度不足,左右两侧补平分规定的字符 zfill():将字符串数据以规定的长度进行存储,内容在右侧显

  • 搞它!!! Linux 查看CPU信息,机器型号,内存等信息

    一、系统#uname-a#查看内核/操作系统/CPU信息 #head-n1/etc/issue#查看操作系统版本 #cat/proc/cpuinfo#查看CPU信息 #hostname#查看计算机名 #lspci-tv#列出所有PCI设备 #lsusb-tv#列出所有USB设备 #lsmod#列出加载的内核模块 #env#查看环境变量复制二、资源#free-m#查看内存使用量和交换区使用量 #df-h#查看各分区使用情况 #du-sh<目录名>#查看指定目录的大小 #grepMemTotal/proc/meminfo#查看内存总量 #grepMemFree/proc/meminfo#查看空闲内存量 #uptime#查看系统运行时间、用户数、负载 #cat/proc/loadavg#查看系统负载复制三、磁盘和分区#mount|column-t#查看挂接的分区状态 #fdisk-l#查看所有分区 #swapon-s#查看所有交换分区 #hdparm-i/dev/hda#查看磁盘参数(仅适用于IDE设备) #dmesg|grepIDE#查看启动时IDE设备检测状况复制四、网络#i

  • 写在人工智能退潮时

    金融大鳄索罗斯曾经说过:世界经济史是一部基于假象和谎言的连续剧。要获得财富,做法就是认清其假象,投入其中,然后在假象被公众认识之前退出游戏。这一赤裸裸的搏傻理论,在金融行业屡试不爽。从楼市、黄金等传统经济,再到移动互联网、大数据、云、区块链等新兴科技,掌握此规律的人无不赚得盆满钵满。然而金融杠杆确实是一把双刃剑,只要被它所瞄准的对象,大潮来时可以使其加速发展,大潮退去便落得满地鸡毛……一.人工智能的低谷将至以2012年为起点,各路投资人开始蜂拥涌入AI赛道。首先进场的是互联网巨头。Google、Facebook等公司开始大举扫货,不惜重金购入深度学习领域的头部学者。另一方面,VCPE们也不甘示弱,热钱汹涌之下,大批深度学习领域中的专家开始在风险资本的支持下自主创业。据乌镇智库发布的《全球人工智能发展报告》显示,仅2012年到2016年,全球人工智能企业就新增5154家,融资规模达224亿美元,占2000到2016年累积融资规模的77.8%;其中,光2016一年的融资规模就达到了92.2亿美元,是2012年的近6倍,相当于2000年到2013年13年间总融资额之和。在大批投资人看来,人工

  • 《Apex英雄》PC/PS4 Pro/X1X画面对比 表现都不错

    近日,EA推出的大逃杀类FPS《Apex英雄》成为全球玩家焦点,游戏一周吸引了2500万玩家,成为2019年第一款爆款游戏。最近外媒Gamingbolt评测了这款游戏,并且放出了PS4Pro/XboxOneX/PC版画面对比视频。Gamingbolt评测《Apex英雄》PC版配置为GTX1080Ti/16GB内存/Ryzen1700CPU处理器,游戏画面设置十分丰富。对比视频:在PS4Pro和XboxOneX主机上,两个版本都基本稳定在每秒60帧的流畅度。在分辨率上,XboxOneX比PS4Pro的分辨率更高,不过如同《泰坦陨落2》,游戏采用了动态分辨率,大多数情况下,这两版本的整体画面效果是差不多的。与PC相比,两大主机的版本在画质细节上有一定缩水,主要表现在阴影质量、环境光遮蔽和动态阴影。不过考虑到PC的配置要高于主机,加上有大量可调节的画面设置选项,这些差距也不足为奇。总结:PC版画面最棒,如果玩家硬件给力,《Apex英雄》在PC上可以实现最好的效果。而XboxOneX和PS4Pro版表现也不错。

  • 如何应对访问量激增?前端高并发策略深层思考

    作 者Gary,腾讯web前端开发高级工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。WeTest导读一项指标的变好,总少不了相应优化策略的实施。优化并不是简单的一蹴而就,而是个不断迭代与推翻的过程。更深层的优化方案,往往是在某种思维策略之下,对问题场景和基本策略优缺的深刻理解后做出的当下最优的权衡结果。本文笔者从前端高并发优化这一具体点出发,逐步向大家阐述笔者在优化的“术”之上思维层面的一些思考。希望能给各位带来共鸣和感悟。背景:之所以会以前端高并发这一主题入手,一来是本人曾负责过一些超高并发量的业务(手Q红包),在这方面算是有些经验。二来是相对于业务功能优化这类光前端层面的逻辑就涉及产品、设计等多方人员合作讨论而完成的优化(即逻辑本身并非纯出自前端人员的脑子),前端高并发这种前端层面逻辑纯由前端人员全把控的优化,或许作为前端的我,能得出来的思考观点会更深刻和更通用一些。一普遍的优化思路说到优化,大家在收到“优化指标”任务的时候。通常会做两件事情——分析“优化指标”对应的痛点、寻找解决痛点的技术方案并施行。那这样是否就足够了呢?我的答案是否定的。在我的认知里这只是

  • JS 中 this上下文对象的使用方式

    JavaScript有一套完全不同于其它语言的对 this 的处理机制。在五种不同的情况下,this 指向的各不相同。有句话说得很在理--谁调用它,this就指向谁一、全局范围内在全局范围内使用this,它将指向全局对象(浏览器中为window)varname='name1'; console.log(name); this.name='name2'; console.log(name); console.log(this.name); window.name='name3'; console.log(name); console.log(this.name); console.log(window.name);复制二、函数调用直接调用一个函数,this默认会指向全局(浏览器端为window)varname='name1'; functionsayName(){ console.log(name); console.log(this); } sayName(); window.sayName();复制

  • dpkg:错误:正在解析文件 '/var/lib/dpkg/updates/0014' 第 0 行附近:在字段名 #padding 中有换行符问题的解决方法

    解决方案如下:sudorm/var/lib/dpkg/updates/*复制sudoapt-getupdate复制python@ubuntu:~/Desktop/_Welcome_.jpg.extracted$sudorm/var/lib/dpkg/updates/* python@ubuntu:~/Desktop/_Welcome_.jpg.extracted$sudoapt-getupdate复制问题解决!!!

  • 【CCCF专栏】人工智能的缘起

    作者:尼克国家千人计划专家。图灵基金合伙人。早年曾任职于哈佛大学和惠普,后连环创业。中文著作包括《UNIX内核剖析》和《哲学评书》等。 背景1956年的达特茅斯会议(DartmouthConference)被公认为是人工智能的起源。殊不知,1955年在洛杉矶召开的美国西部计算机联合大会(WesternJointComputerConference)上已经展开了“学习机讨论会”(SessiononLearningMachine)。讨论会的参加者中有两个人参加了第二年的达特茅斯会议,他们是奥利弗·赛弗里奇(OliverSelfridge)和艾伦·纽厄尔(AlanNewell)。赛弗里奇发表了一篇关于模式识别的文章,而纽厄尔则探讨了计算机是否能下棋。他们分别代表两派观点。讨论会的主持人是神经网络的鼻祖之一皮茨(Pitts),他最后总结时说“(一派人)企图模拟神经系统,而纽厄尔则企图模拟心智⋯⋯但殊途同归”。这预示了随后的几十年人工智能关于“结构与功能”两条路线的斗争。 让我们先了解6位与达特茅斯会议相关的人。首先,会议的召集者麦卡锡(JohnMcCarthy),当时是达特茅斯学院数学系助理教

  • Android基础进阶之学习使用AIDL进行跨进程通信

    AIDL是什么AIDL(AndroidInterfaceDefinitionLanguage),即接口定义语言,Android提供的IPC(InterProcessCommunication,进程间通信)的一种独特实现。 借助它,你可以定义接口,使得客户端和服务端之间实现进程间通信。对android来说,一个进程无法通过正常的方法来访问另一个进程的内存空间。可以说,他们需要把对象分解成操作系统可以理解的原子类型,然后使对象突破限制在不同进程之间进行传输。具体实现这种机制的代码写起来非常枯燥,所以android为你提供了AIDL语言来进行处理。 使用AIDL可以解决什么样的问题当你需要来自不同应用的客户端访问你的服务时,你就需要一个AIDl了。 举个小栗子: 手机管家提供了黑名单、号码拦截等服务,手机通信录、短信等应用需要实时获取已经被加入给名单或者标记的号码,而这部分数据是存储在手机管家这个app的数据库中。那么,为了方便通讯录和短信这些应用访问数据,手机管家就可以通过实现AIDL提供这项服务。 手把手教你写一个Demo感受Aidl的使用第一步:编写Server端(提供服务方)

  • layoutSubviews 调用

    大家好,又见面了,我是你们的朋友全栈君。 学习了一下UIView的setNeedsDisplay和setNeedsLayout方法。首先两个方法都是异步执行的。而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到UIGraphicsGetCurrentContext,就可以画画了。而setNeedsLayout会默认调用layoutSubViews,就可以处理子视图中的一些数据。 宗上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。 \ipad横竖屏切换解决方案 2011年08月01日星期一10:09 由于ipad的横竖屏不同,所以好的应用,横竖屏的页面布局也不一样。那么就需要横竖屏的整体解决方案。先看一个横竖屏布局不一样的界面。上面两张图是来自同一个界面的横竖版的截屏。可以看出,横竖版显示的内容相同,但是界面布局不同。要实现上述布局,主要是运用UIView中layoutSubviews方法。当UIView设置为自动适配屏幕时,当用户旋转设备的时候,会调用layoutSubviews方法,我们只需重写这个方法,然后判

  • 面试突击51:为什么单例一定要加 volatile?

    单例模式的实现方法有很多种,如饿汉模式、懒汉模式、静态内部类和枚举等,当面试官问到“为什么单例模式一定要加volatile?”时,那么他指的是为什么懒汉模式中的私有变量要加volatile? 懒汉模式指的是对象的创建是懒加载的方式,并不是在程序启动时就创建对象,而是第一次被真正使用时才创建对象。 要解释为什么要加volatile?我们先来看懒汉模式的具体实现代码: publicclassSingleton{ //1.防止外部直接new对象破坏单例模式 privateSingleton(){} //2.通过私有变量保存单例对象【添加了volatile修饰】 privatestaticvolatileSingletoninstance=null; //3.提供公共获取单例对象的方法 publicstaticSingletongetInstance(){ if(instance==null){//第1次效验 synchronized(Singleton.class){ if(instance==null){//第2次效验 instance=newSingleton(); } } } re

  • 自定义标签的可用性

       我们早已习惯了使用大量的DIV来给页面布局,把具体的样式交给class属性来指配。但我们到底为什么非要用DIV不可呢?我觉得大堆的DIV堆砌是一种毫无语义的糟糕设计,在HTML自带的标签不够用时可以试试自定义标签,而且这可以有全浏览器兼容方案的。   在切图时候经常会遇到标签不够用的情况,非得给元素加class才能解决,而且class的命名总是想不出合适的。这时候如果使用自定义标签就可以解决这些问题。虽然自定义标签也需要命名,但它的定义不再局限于“样式”,可以突破“样式”的局限使用更多词汇。   在HTML5中,标签名带连接符“-”的标签是用于自定义的。虽然在API中提供了document.registerElement方法用于为这些自带标签指派具体的类型,但即使没有指派,它也会被作为一个HTMLUnknownElement存在。而这个HTMLUnknownElement也同样是继承于HTMLElement的,所以它依然是一个标签。   也就是说,我们可以在现代浏览器中使用任何标签,它只是被作为HTMLUnknownElement处理而已。但我们也不

  • Mac/Ubuntu下的数据建模工具PDMan,替代PowerDesigner

    PowerDesigner我使用过用Wine在Linux和Mac下用,但总有些缺陷,用Navicat却发觉没有Linux版本的; 一般关心的问题主要有如下: 1、数据库的关系设计图。 2、导出数据库脚本以及表格。 现在开发无非上面这几种功能。 刚好PDMan基本满足,且可以自行修改模板,并且Linux和Mac都可以支持。且导出的脚本支持MySQL、PG、MSSQL,甚至还可以生成Java代码。 效果如下: 官网: https://gitee.com/robergroup/pdman https://www.oschina.net/p/PDMan https://my.oschina.net/skymozn/blog/2992777(下载地址)  

  • c#Task任务学习记录

    staticCancellationTokenSourcetokenSource=newCancellationTokenSource(); CancellationTokentoken=tokenSource.Token; ManualResetEventresetEvent=newManualResetEvent(true); publicForm1() { InitializeComponent(); } privateasyncvoidbutton1_Click(objectsender,EventArgse) { #region异步暂停继续取消结束回调(不阻塞界面) Tasktask=newTask(async()=> { while(true) { if(token.IsCancellationRequested)//是否取消线程 { return; } resetEvent.WaitOne();//是否阻塞线程 Test(); Console.WriteLine("加法之后的输出!!!"); //模拟等待100ms awaitTask.Delay(100); }

  • 使用内置tomcat的pom配置

    在<build>标签里面添加 <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> <include>**/*.md</include> </includes> <filtering>false</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <ver

  • php

    LAMP LNMP   Linux+vim

  • [工作积累] Android system dialog with native callback

    JNI:invokejavadialogwithnativecallback:   storenativefunctionaddressinjava,andinvokenativeanothermethodtothisfunction.   keypoints: 1.Storecallbackfunctionpointer(address)injava:tosupportmultiplecalls,usedatablockforeachcall. 2.Useprimitivelong(64bit)inJavatostorenativecallbackpointer,for64bitnativecompatibility 3.intptr_tforpointerinnative. 4.Showdialog inUIthread(Activity.runOnUiThread ) 5.optional:Letthenativecodetohandlelocalization(minimizeJavacode)   Java: 1public

  • 高级软件工程2017第2次作业

    项目Github地址:https://github.com/wtt1002/OperationTest.git PSP表格 PSP2.1 PersonalSoftwareProcessStages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 30 ·Estimate ·估计这个任务需要多少时间 600 700 Development 开发 560 700 ·Analysis ·需求分析(包括学习新技术) 40 30 ·DesignSpec ·生成设计文档 40 30 ·DesignReview ·设计复审(和同事审核设计文档) 10 20 ·CodingStandard ·代码规范(为目前的开发制定合适的规范) 20 20 ·Design ·具体设计 60 80 ·Coding ·具体编码 300 420 ·CodeReview ·代码复审 60 40 ·Test ·测试(自我测试,修改代码,提交修改) 30 60 Reporting 报告 100 120 ·TestReport ·测试报告 40

相关推荐

推荐阅读