关于jsoncpp源码使用说明

版权声明:版权所有,违者必究。 https://blog.csdn.net/ustczhng2012/article/details/81839737

目录

引言

静态链接库方式

直接使用源码方式

常见问题


引言

在项目中,存在将string格式与json格式数据结构互相转换的场景。为避免重复造轮子,可从Github下载源码(C++),链接:https://github.com/Eureca2017/jsoncpp,如图1所示。

图1 Github源码仓库示意图

上述链接下载的工程为jsoncpp-master,其内容较多且较杂,为方便使用提供了2种方式供用户使用,(1)通过生成静态链接库lib使用(2)通过运行脚本文件生成可直接使用的源码。下面主要介绍2种方式的使用方法以及需要注意的地方。

静态链接库方式

步骤1:打开jsoncpp-master文件夹,如图2所示。

图2 打开json-master示意图

步骤2:依次打开makefiles\vs71目录,运行图3中jsoncpp.sln解决方案,编译链接lib_json.vcproj工程。

图3 jsoncpp解决方案示意图

步骤3:编译链接完成之后,回到jsoncpp-master工程目录下,如图4所示,打开build目录,然后依次打开\vs71\debug\lib_son目录,在该目录下便可看到生成的静态链接库json_vc71_libmtd.lib,如图5所示。(注:后面将使用该链接库)

图4 jsoncpp-master目录示意图

 

图5 生成的静态链接库示意图

步骤4:关于使用静态链接库,可以有两种方法,一种是在VS中配置工程环境,一种采用pragma comment语句。

  1. 在加载静态链接库之前先设置包含头文件路径。右击解决方案,选择属性,结果如图6所示,然后设置为jsoncpp-master工程目录下的include文件夹,再在代码中写入#include "json/json.h"即可实现头文件的包含(注意:若设置包含目录到json文件夹这一层,则在代码中写入#include "json.h")。
  2. 若采用配置工程环境加载静态链接库则按照图7依次设置;若采用pragma comment语句则在cpp文件中开头加入图7下方的代码语句,当然路径只是示意,一般链接库若放在工程同一目录下则可按示意语句写。
图6 项目头文件的存放路径
图7 项目配置加载静态链接库示意图
#pragma comment(lib,"json_vc71_libmtd.lib")

直接使用源码方式

步骤1:如图8所示,amalgamate.py便是生成可直接使用的json源码文件的脚本,在jsoncpp-master目录下运行cmd,执行python amalgamate.py文件便可得到(前提是系统里安装并配置了python的运行环境)。

图8 脚本文件示意图

步骤2:得到的源码文件在jsoncpp-master目录下的dist文件夹里,里面有jsoncpp.cpp文件和包含头文件的json文件夹。

步骤3:在项目中引入jsoncpp.cpp文件,并包含json相应的头文件(#include "json/json.h"),运行时若出现不能发现头文件问题应按照静态链接库方式中步骤4的第2步设置项目搜索头文件的目录。

常见问题

  1. 在VS2005及以下版本时,会出现fatal error C1083: 无法打开包含文件:“stdint.h”: No such file or directory问题。
  2. 在VS2012及以上版本时,引用编译出的JSON库文件时,出现Use CharReader and CharReaderBuilder instead问题。
    • 待写。

猜你喜欢

转载自blog.csdn.net/ustczhng2012/article/details/81839737