您的位置:首页 > Web前端 > JavaScript

redhat6.0源码使用jsoncpp

2016-12-06 14:28 302 查看
本文自己玩出来的,网上许多使用jsoncpp几乎都一样,我按其操作编译后使用,报了很多错。最终自己源码编译生成一个静态库,事实上有了源码怎么都可以。

 

1、  下载源码包:

下载地址为:http://sourceforge.net/projects/jsoncpp(版本为jsoncpp-src-0.5.0)

2、  解压源码包:

tar -zvxf jsoncpp-src-0.5.0.tar.gz,解压后会生一个jsoncpp-src-0.5.0的文件夹,cd
jsoncpp-src-0.5.0, 如图:

你只需要关心include和src目录。会用到include目录下的json目录下的所有文件,其实就是头文件,如图:

和src目录下的lib_json目录下的文件,其实就是源文件,如图:

 

3、  编译源码使用:

我这里新建一个目录test1,将头文件和源文件拷入其下,注意头文件是在json目下,拷贝时要使其在json目录下。如图:

 

写一个Makefile编译成静态库,并test.cpp中测试。

Makefile内容如下:

libjsonlib.a:json_reader.o json_value.o json_writer.o

ar rs libjsonlib.a json_reader.o json_value.ojson_writer.o

json_reader.o:json_reader.cpp

g++ -std=c++11 -Wall -c -I. json_reader.cpp

json_value.o:json_value.cpp

g++ -std=c++11 -Wall -c -I. json_value.cpp

json_writer.o:json_writer.cpp

g++ -std=c++11 -Wall -c -I. json_writer.cpp

clean:

rm -rf *.o

 

test.cpp源码内容如下:

#include<string>

#include<json/json.h>

#include<stdio.h>

usingnamespace std;

int main(intargc, char *argv[])

{

stringtest="{\"id\":1,\"name\":\"kurama\"}";

Json::Reader reader;

Json::Value  value;

 

if(reader.parse(test,value))

{

           if(!value["id"].isNull())

          {

                   printf("%d\n",value["id"].asInt());

                  printf("%s\n",value["name"].asString().c_str());

          }

}

return 0;

}

//g++ -std=c++11 -g  -Wall -I.test.cpp -L. -ljsonlib
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: