Jsoncpp 是一个用来处理 Json文本的开源C++库。源码资源的百度网盘链接:https://pan.baidu.com/s/1v6QVf0TNMa6vF-71YubtJQ 提取码:bcu9
windows版本的库编译就不用演示了,将源码文件解压缩之后makefiles文件夹下就有直接可以用VS打开的工程文件,直接双击打开编译完就可以用。重点我们编译一下Linux版本的库,将jsoncpp源码编译成动态库,项目用的时候直接链接动态库就行。
生成libjsoncpp.so动态库
1、将下载的源码库解压后拷贝src和include文件夹至Linux环境编译。如下图:
2、在src文件夹的lib_json目录下编写Makefile文件,格式如下:
# Auth: lijd # Date: 2021/02/24 CC := g++ TARGET := libjsoncpp.so INCLUDES := ../../include FLAGES := $(addprefix -I, $(INCLUDES)) SRCS := $(wildcard *.cpp) $(TARGET): $(SRCS) $(CC) -shared -fPIC -o $@ $^ $(FLAGES) @echo "==================================== Build OK!!! ====================================" .PHONY: clean clean: @rm -rf $(TARGET)
3、在lib_json目录下执行make生产动态库文件,如下图:
测试验证 libjsoncpp.so动态库
1、用源码中自带的"src/test_lib_json"目录下的代码测试,编写类似于上面的Makefile并执行make生产可执行程序并运行测试。Makefile文件及运行流程如下图:
# Auth: lijd # Date: 2021/02/24 CC := g++ TARGET := json_lijd INCLUDES := ../../include LIBS := jsoncpp LIBDIRS := ../lib_json FLAGES := $(addprefix -I, $(INCLUDES)) $(addprefix -L, $(LIBDIRS)) $(addprefix -l, $(LIBS)) SRCS := $(wildcard *.cpp) $(TARGET): $(SRCS) $(CC) -o $@ $^ $(FLAGES) @echo "==================================== Build OK!!! ====================================" .PHONY: clean clean: @rm -rf $(TARGET)
2、自己写的测试代码main.cpp及Makefile进行测试。将main.cpp及Makefile放在lijd_test文件夹,并将该文件夹放在src目录下。代码及运行流程如下图:
// 文件main.cpp #include <iostream> #include <string> #include "json/json.h" using namespace std; int main() { string test_txt = "{\"CtrType\":2,\"CtrParam\":0,\"CheckCodeLen\":32,\"CheckCode\":\"3939464638453636354246383743313243384530373535354643383930414436\"}"; Json::Reader reader; Json::Value value; if (reader.parse(test_txt,value)) { // encoding cout << value["CtrType"].asInt() << endl; cout << value["CtrParam"].asInt() << endl; cout << value["CheckCodeLen"].asInt() << endl; cout << value["CheckCode"].asString() << endl; } return 0; }
# Auth: lijd # Date: 2021/2/24 CC := g++ TARGET := lijd_test INCLUDES := ../../include LIBS := jsoncpp LIBDIRS := ../lib_json FLAGES := $(addprefix -I, $(INCLUDES)) $(addprefix -L, $(LIBDIRS)) $(addprefix -l, $(LIBS)) SRCS := $(wildcard *.cpp) $(TARGET): $(SRCS) $(CC) -o $@ $^ $(FLAGES) @echo "==================================== Build OK!!! ====================================" .PHONY: clean clean: @rm -rf $(TARGET)
程序运行结果如下图: