Jsoncpp引用规范_"bool __cdecl std::uncaught_exception(void)\" (?un-程序员宅基地

技术标签: json  jsoncpp  数据结构  



解析JSON需要引入库文件。C++开源的有很多库。git上面也有许多Json的解析库。目前使用的最多的是https://github.com/open-source-parsers/jsoncpp。 名为jsoncpp。

使用Jsoncpp

方法一使用Jsoncpp生成的lib文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

3.使用vs打开jsoncpp-src-0.5.0.tar.gz\makefile\vs71目录下中的jsoncpp.sln,打开后会出现三个项目工程jsontest, lib_json, test_lib_json

4.在lib_json上右击->Properties-->Configuration Properties-->C/C++-->Code Generation,记录下右边的Runtime Library的属性内容(因为两个工程的属性要保持相同,否则会编译出错)

5.编译lib_json,显示编译成功以后,在jsoncpp_src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝到需要使用jsoncpp的工程目录下。

6.将jsoncpp-src-0.5.0\include\json目录下的所有的.h文件拷贝到需要使用jsoncpp的工程目录下,并在头文件中引入这个文件。

7.找到自己的项目工程,点击Properties-->Configuration Properties-->C/C++-->Code Generation,将Runtime Library修改为第4步中相同的内容。

8.在工程名上右键点击Properties-->Configuration Properties-->Linker-->Input,在Additional Dependencies里面填写json_vc71_libmtd.lib,点击应用,点击编译即可。

方法二:使用Jsoncpp包中的.cpp和.h文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压上面下载的Jsoncpp文件.得到文件jsoncpp-src-0.5.0

3.将jsoncpp-src-0.5.0\include目录下的json文件夹拷贝到当前项目工程目录下

4.将jsoncpp-src-0.5.0\src\lib_json 目录下的所有文件拷贝到

5.在vs中引入工程目录中在jsoncpp-src-0.5.0中导入的文件

如图

在需要使用这个库的时候,在cpp中include"json/json.h"即可。

在编译的时候可能报错:作以下改动即可

  1. json_reader.cpp 中加入#include "stdafx.h",将#include<json/reader.h>改为#include“json/reader.h”,#include<json/value.h>改为#include "json/value.h";
  2. json_value.cpp中加入#include "stdafx.h",将#include <json/value.h>改为#include "json/value.h", #include <json/writer.h>改为 #include "json/writer.h";
  3. json_writer.cpp中加入#include "stdafx.h",将#include <json/writer.h>改为#include "json/writer.h"。
以上方法来自:http://blog.csdn.net/chenxun_2010/article/details/41847131


抱着学习不能一知半解的心态,测试一下:

1.在方法一中,第4步:

(关于工程属性的作用在我的博客中有转载)

①修改使用jsoncpp的项目工程使得它与jsoncpp的原本的运行库不同

测试结果:报错:


复制一条:

错误43 error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) 已经在 libcpmtd.lib(uncaught.obj) 中定义。

由运行库不同,可知:MTd 使用的是        libcpmtd.lib。

由此猜想为什么保持一致,是因为MTd,MDd都会引用一个库,而几个库中有许多相同的函数或者类,因此如果不保持一致则会引起重复定义。

②修改原本工程的运行库属性:

属性中分为Release和Debug版本,Release版本有:MT /MD,Debug版本有:MTd/MDd 版本,原本的是MTd,现在修改为MDd。使用jsoncpp的项目工程中也同样修改为MDd。

测试结果运行成功。






解析JSON需要引入库文件。C++开源的有很多库。git上面也有许多Json的解析库。目前使用的最多的是https://github.com/open-source-parsers/jsoncpp。 名为jsoncpp。

使用Jsoncpp

方法一使用Jsoncpp生成的lib文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压下载好的文件:jsoncpp-src-0.5.0.tar.gz

3.使用vs打开jsoncpp-src-0.5.0.tar.gz\makefile\vs71目录下中的jsoncpp.sln,打开后会出现三个项目工程jsontest, lib_json, test_lib_json

4.在lib_json上右击->Properties-->Configuration Properties-->C/C++-->Code Generation,记录下右边的Runtime Library的属性内容(因为两个工程的属性要保持相同,否则会编译出错)

5.编译lib_json,显示编译成功以后,在jsoncpp_src-0.5.0\build\vs71\debug\lib_json目录下会生成一个json_vc71_libmtd.lib,将这个lib拷贝到需要使用jsoncpp的工程目录下。

6.将jsoncpp-src-0.5.0\include\json目录下的所有的.h文件拷贝到需要使用jsoncpp的工程目录下,并在头文件中引入这个文件。

7.找到自己的项目工程,点击Properties-->Configuration Properties-->C/C++-->Code Generation,将Runtime Library修改为第4步中相同的内容。

8.在工程名上右键点击Properties-->Configuration Properties-->Linker-->Input,在Additional Dependencies里面填写json_vc71_libmtd.lib,点击应用,点击编译即可。

方法二:使用Jsoncpp包中的.cpp和.h文件

1.从git上下载jsoncpp:https://github.com/open-source-parsers/jsoncpp

2.解压上面下载的Jsoncpp文件.得到文件jsoncpp-src-0.5.0

3.将jsoncpp-src-0.5.0\include目录下的json文件夹拷贝到当前项目工程目录下

4.将jsoncpp-src-0.5.0\src\lib_json 目录下的所有文件拷贝到

5.在vs中引入工程目录中在jsoncpp-src-0.5.0中导入的文件

如图

在需要使用这个库的时候,在cpp中include"json/json.h"即可。

在编译的时候可能报错:作以下改动即可

  1. json_reader.cpp 中加入#include "stdafx.h",将#include<json/reader.h>改为#include“json/reader.h”,#include<json/value.h>改为#include "json/value.h";
  2. json_value.cpp中加入#include "stdafx.h",将#include <json/value.h>改为#include "json/value.h", #include <json/writer.h>改为 #include "json/writer.h";
  3. json_writer.cpp中加入#include "stdafx.h",将#include <json/writer.h>改为#include "json/writer.h"。
以上方法来自:http://blog.csdn.net/chenxun_2010/article/details/41847131


抱着学习不能一知半解的心态,测试一下:

1.在方法一中,第4步:

(关于工程属性的作用在我的博客中有转载)

①修改使用jsoncpp的项目工程使得它与jsoncpp的原本的运行库不同

测试结果:报错:


复制一条:

错误43 error LNK2005: "bool __cdecl std::uncaught_exception(void)" (?uncaught_exception@std@@YA_NXZ) 已经在 libcpmtd.lib(uncaught.obj) 中定义。

由运行库不同,可知:MTd 使用的是        libcpmtd.lib。

由此猜想为什么保持一致,是因为MTd,MDd都会引用一个库,而几个库中有许多相同的函数或者类,因此如果不保持一致则会引起重复定义。

②修改原本工程的运行库属性:

属性中分为Release和Debug版本,Release版本有:MT /MD,Debug版本有:MTd/MDd 版本,原本的是MTd,现在修改为MDd。使用jsoncpp的项目工程中也同样修改为MDd。

测试结果运行成功。





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Super_cpp/article/details/52993930

智能推荐

ESP8266和ESP32区别,以及优缺点分析!_esp8266为什么不建议使用-程序员宅基地

文章浏览阅读3.4k次,点赞3次,收藏4次。高速主频240MHZ,对比STM32F1的72MHZ和STM32F4的168MHZ,速度快很多,而且价格上比起一直在涨价的STM系低出非常多;总的来说,STM32在国内的使用程度和受众程度是远大于ESP32的,毕竟STM32已经占据主流市场很久了,学习的资料比起ESP32起来会多,再加上一些开源问题,使用32的人群还是占据多数。2016年,乐鑫推出了ESP32,它是ESP8266的升级版本,速度更快还带有蓝牙4.2和蓝牙低功耗,价格在20元左右,在这个价格下几乎找不到对手可以“一战”。_esp8266为什么不建议使用

linux 分区简介,Linux硬盘分区知识简介-程序员宅基地

文章浏览阅读990次。Linux系统可以挂载多个不同接口类型的磁盘(disk),每一个磁盘又可以分成若干个分区(Partition),每个分区又可以拥有自己的文件系统类型(FileSystem)。Linux对于磁盘和分区又自己的一套标记方法。硬盘和分区的区分第一个SCSI(Small Computer System Interface)磁盘记为/dev/sda,第二个SCSI磁盘记为/dev/sdb;第一个SATA磁盘..._linux引导分区的标记可为

unity 网络游戏架构设计(第12课:网络游戏案例讲解)之美_网络游戏消息结构设计案例-程序员宅基地

文章浏览阅读656次。第12课:网络游戏案例讲解上章给读者介绍关于服务器之间的通信,本章通过案例给读者介绍如何将框架跟 Photon 结合起来,实现一个网络通信的框架设计。UI 架构设计模块已经介绍过,我们的 Demo 使用的 UI 是 UGUI,简单的用几个 Button 代替 Sprite,它们的原理是一样的。我们先创建一个 UI,如下图所示:这个 UI 主要有三个关键按钮,分别是 Create Roo..._网络游戏消息结构设计案例

Android-Gradle详解_grade编译运行安卓-程序员宅基地

文章浏览阅读548次。Android 构建系统非常灵活,可让你在不修改应用核心源代码文件的情况下执行自定义构建配置。本部分将介绍 Android 构建系统的工作原理,以及它如何帮助你对多个构建配置进行自定义和自动化处理。构建过程涉及许多将你的项目转换为 Android 应用程序包 (APK) 的工具和过程。构建过程非常灵活,因此了解一些幕后发生的事情很有用。下图为Android 应用模块的构建过程。Android 应用模块的构建过程(如上图所示)遵循以下一般步骤:1、编译器将你的源代码转换为 DEX(Dalv_grade编译运行安卓

linux网络配置后面加一条wheel,linux安全配置/etc/sudoers&wheel组-程序员宅基地

文章浏览阅读800次。/etc/sudoers 控制哪些用户能在哪些主机上以哪些用户的身份执行哪些命令。只有此文件权限为440时才能用户才能使用sudo命令,只有root用户才能使用visudo命令修改此文件。当然也可以先添加文件写权限,然后修改,再把文件权限改回来。此文件的一些配置规则定义别名:User_Alias UserName = user1,user2,kongoveHost_Alias HostName =..._%wheel all=(all) all

NO.15——使用Appium自动化测试爬取微信朋友圈数据_appium监测微信图片-程序员宅基地

文章浏览阅读9.7k次,点赞5次,收藏27次。 一、解析过程本人使用锤子手机做测试,型号是YQ601,首先打开开发者模式确保手机能与mac相连,打开Appium客户端,配置参数如图可以理解为Appuim继承自web端的selenium,同样可以执行一些自动化操作。Appium自带了一个XPATH选择器,给用户提供了选择结果,如图这个选择器给出的结果太繁琐,所以可以改成通过查找ID的方式来构造爬虫程序。但是这里要注意,估计微信提升了自己..._appium监测微信图片

随便推点

交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装-程序员宅基地

文章浏览阅读8w次,点赞20次,收藏160次。aarch64-linux-gnu-gcc 是由 Linaro 公司基于 GCC 推出的的 ARM 交叉编译工具_aarch64-linux-gnu-gcc

数码管扫描显示verilog_如何开始Xilinx FPGA开发之旅 第二课 EGO1数码管与键盘-程序员宅基地

文章浏览阅读1.4k次。庚子年,我们的EGO1在疫情当中作为口袋实验平台成为了众多高校的复课利器。其中的成功案例更是得到了新华社网媒与CCTV教育频道的报道。借此东风,为了让更多的老师与学生熟悉了解Xilinx,更好的入门学习FPGA知识,我们的师资培训直播已开设EGO1专题直播,欢迎新老朋友跟踪关注。第二课---- EGO1数码管与键盘本周的直播我们将介绍EGO1的外设使用案例,介绍数码管扫描的原理和PS/2..._fpgaego1 键盘

python re库安装_python 库安装方法及常用库-程序员宅基地

文章浏览阅读3.6k次。python库安装方法:方法一:setpu.py1.下载库压缩包,解压,记录下路径:*:/**/……/2.运行cmd,切换到*:/**/……/目录下3.运行setup.py build4.然后输入python,进入python模块,验证是否安装成功方法二:1.Win + R 打开运行窗口,输入cmd回车2.找到pip安装路径——x:\Python xx\Scripts3. 在命令行中切换至该目录c..._rep库怎么安装

android listview fling,ListView优化: Fling(松开滑动) 过程中不加载数据-程序员宅基地

文章浏览阅读189次。1.Adapter增加滑动结束以后刷新方法//定义当前listview是否在滑动状态private boolean isScrolling = false;public void setScrolling(boolean scrolling) {this.isScrolling = scrolling;}public void refreshOnScrollEnd(AdapterView list..._android listview fling

微信公众号JSAPI自费支付总结_微信自动续费api-程序员宅基地

文章浏览阅读535次。文章目录前言一、准备操作1.公众号ID2.商户号3.商户号密钥4.域名、服务器二、步入正题1. 支付流程2. 初始化订单数据2.读入数据总结前言本编章主要是通过运行一个自费测试demo使其能够快速了解微信自费支付的实现流程,也是个人实现微信自费demo之后的记录、总结官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1一、准备操作进行微信自费支付之前请先获得以下几项必要条件,公众号和商户号需要绑定名称_微信自动续费api

java byte 字节负数-程序员宅基地

文章浏览阅读2w次。由于通讯协议中长度使用byte字节来表示,但在java中长度超过127的时候会变成负数,所以需要保证得到的长度是正数byte b & 0xFFhttp://www.blogjava.net/orangelizq/archive/2008/07/20/216228.html在剖析该问题前请看如下代码public static String bytes2HexString(

推荐文章

热门文章

相关标签