关于使用C++ json库一些错误的解决方法


json官网 http://www.json.org/
json资源下载地址 http://sourceforge.net/projects/jsoncpp/

下载json库后,进入makefiles\vs71 选择工程文件进行编译 

编译完成后,可以在build\vs71目录下的debug或release目录下的lib_json文件夹下找到生成的lib文件

如果你的工程需要用到json库,将lib文件和include\json目录拷贝到你的工程目录下,或者将工程的目录引用过来,就可以使用了

但是,有些时候会遇到类似问题

1.第一种情况:

>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __cdecl std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QEAA@XZ) 已经在 libcpmtd.lib(xlock.obj) 中定义
>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __cdecl std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QEAA@H@Z) 已经在 libcpmtd.lib(xlock.obj) 中定义
>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "void __cdecl std::_Debug_message(wchar_t const *,wchar_t const *,unsigned int)" (?_Debug_message@std@@YAXPEB_W0I@Z) 已经在 libcpmtd.lib(stdthrow.obj) 中定义
>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: void __cdecl std::_Container_base12::_Orphan_all(void)" (?_Orphan_all@_Container_base12@std@@QEAAXXZ) 已经在 BehaviorTree.obj 中定义
>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __cdecl std::_Container_base12::~_Container_base12(void)" (??1_Container_base12@std@@QEAA@XZ) 已经在 BehaviorTree.obj 中定义
>msvcprtd.lib(MSVCP100D.dll) : error LNK2005: "public: __cdecl std::_Container_base12::_Container_base12(void)" (??0_Container_base12@std@@QEAA@XZ) 已经在 BehaviorTree.obj 中定义

....

发生这种情况,首先,打开json工程,右键-->属性-->C/C++-->代码生成-->运行库 查询此选择的属性 和你的工程属性是否相同,需要保持一致才可以


2.第二种情况:

error LNK2019: 无法解析的外部符号 "public: bool __cdecl Json::Reader::parse(char const *,char const *,class Json::Value &,bool)"

...

发生这种情况,打开json工程,右键-->属性 查看平台选项 是否和你的工程属性相同,需要保持一直才可以


3.第三种情况:

../../build/vs71/release/lib_json\json_writer.asm

发生这种情况,打开json工程,右键-->属性,选择release模式, C/C++-->输出文件-->汇编程序输出 选择无列表

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
JSON是一种轻量级的数据交换格式,在现代编程中得到广泛应用。C JSON是一种用C语言编写的实现JSON解析和序列化的。其源码包含了处理JSON数据的各种功能。 C JSON的源码主要包含以下几个方面的实现: 1. JSON解析:C JSON提供了解析JSON字符串的功能,可以将JSON字符串解析为对应的C数据结构。源码会处理不同的JSON数据类型,如字符串、数字、对象、数组等,并将其转换为对应的C数据类型,便于程序的处理和操作。 2. JSON序列化:C JSON还提供了将C数据结构序列化为JSON字符串的功能。源码会将C数据结构的各个字段按照JSON的格式进行拼接,并生成对应的JSON字符串。这样我们可以将C数据结构转换为可传输的JSON字符串,用于网络传输或存储等场景。 3. 错误处理:C JSON的源码还包含了错误处理的逻辑,能够捕捉并处理解析和序列化过程中可能出现的错误。比如,当遇到非法的JSON字符串时,源码会返回错误信息,帮助开发者定位和修复问题。 4. 内存管理:C JSON的源码还负责管理内存的分配和释放。在解析和序列化的过程中,会动态分配和释放内存空间,保证程序的内存使用效率和安全性。 综上所述,C JSON的源码主要涵盖了JSON解析、序列化、错误处理和内存管理等方面的功能实现。通过阅读和理解源码,我们可以深入了解JSON的内部结构和处理逻辑,并能够根据自己的需求进行二次开发和定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值