以下转自:http://blog.csdn.net/laogong5i0/article/details/8212511

最近想用box2dEdit来编辑一下比较复杂的图形然后倒入到自己有游戏里,但box2dEdit编辑后输出的是json文件。

因为没有用C++解析json文件的经验,在网上找了很多有关json的开源项目,有cjson(这是c编写的)jsoncpp(C++的项目,但有人说它的移植性不够好)libjson(支持C和C++)由于对C有一种莫名的恐惧感,所以最后还是选择了libjson这个库。

OK!先得吧文件给下载下来,在google上搜libjson就能找到了,当前最新版是libjson_7.6.1,我用的也是这个版本。

打开一看,好多文件,这样直接加到我们的project会很乱,所以要编译成静态库。

那么开始编译静态库吧!!

解压刚刚下载下来的文件,打开libjson.vcproj文件(我用的是VS2010),由于是.vcproj 是VS2008的项目文件,所以我的VS会自动转成vs2010的工程。

转换的过程稍微等了10秒时间,一打开,杯具了~~~报错!说有非法结束符,用.xml打开确实是少了">"符号,好吧加上去,继续打开,还是报错。这次实在是找不到是神马错了!接着开始怀疑是我VS的问题,好吧,那我在虚拟机上装个VS2008来试试,费了好多时间(下载,安装这是一个痛苦的过程),总算安装完成了,赶快打开libjson。真是无语了,报了一样的错,花了这么长时间,连project工程都没打开,libjson这库也太坑爹了!!

既然工程没办法打开,那么就自己建一个工程来编译好了!

好!!新建一个win32Project,如图下图,记得选static library这个程序类型。

新建成功后我们会来库列表里发现2个.h文件和1个.cpp文件,这个文件是不需要的,我们可以把它删除,它是我们在新建的时候勾选了precompled header 生成的。

按完成后可以吧压缩文件里的源文件copy到我们的项目文件夹里,又看下图,我们只要加入选中部分的文件即可。

然后把它添加到我们刚刚建的项目里,如下图操作,添加后我们的库列表就会如红色框所看到的一样。

OK,到了这个我们可以运行了,运行一下看看吧!!

晕死了,好多错误~~~~~~(难道这B就是个垃圾)

Error 12  error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source?d:\android\win32project\minigame\libjson\_internal\source\libjson.cpp6061libjson

他说我们的.cpp文件忘了#include “stdafx.h”文件,难道这B真是一垃圾,人肉一下“stdafx.h” (结果),原理是win32为程序的一下配置信息,既然是些没用的东西,那我们能不能不加它呢,又再次人肉了这个问题,原理在配置里有预编译的设置。右键项目属性,如下图,我们把 precompiled header 项改成 Not using precompiled headers,不用预编译头。

然后运行,哦~~还是有错误,好吧继续人肉这些概述的bug,

原来在JSONOptions.h 文件里有些需要配置的地方,在我们下载下来的压缩文件里有一个.pdf 文件,里有详细的说明这些选项的作用。在这里我们需要吧

#define JSON_DEPRECATED_FUNCTIONS 这是主要版本的向后兼容性和易用性的过度,不知道有什么用,但document说这个是不能用的,用了会报错,那么我们就坚决的把它注释掉好了。

因为我们现在还是debug模式 所以要吧 #define JSON_DEBUG 开启,这里是设置debug模式或者release模式的。注释掉就是release模式了。

还有#define JSON_LIBRARY这个值,这是说要使用C接口还是C++接口的函数。(这里看你喜欢啦!不注释的话就是使用C接口,我这里用的是C接口)

编译一下,哈哈成功了!!虽然有几个警告。找到.lib 文件,居然后4M多.

下一次再讲 LIb的使用吧!!

下一篇:libjson 编译和使用 - 2. 配置使用lib文件

libjson 编译和使用 - 1. 编译的更多相关文章

  1. android源码环境下用mmm/mm编译模块,输出编译log到文件的方法

    android源码环境下用mmm/mm编译模块,输出编译log到文件的方法 1,在android目录下直接用mmm命令编译, log信息保存在android目录下 mmm packages/apps/ ...

  2. Android反编译(二)之反编译XML资源文件

    Android反编译(二) 之反编译XML资源文件 [目录] 1.工具 2.反编译步骤 3.重新编译APK 4.实例 5.装X技巧 6.学习总结 1.工具 1).反编译工具  apktool http ...

  3. Android反编译(一)之反编译JAVA源码

    Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具  dex2jar   http://code.go ...

  4. C/C++程序编译流程(预处理->编译->汇编->链接)

    程序的基本流程如图: 1. 预处理 预处理相当于根据预处理指令组装新的C/C++程序.经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内 ...

  5. 转 谈谈android反编译和防止反编译的方法

    谈谈android反编译和防止反编译的方法   android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的项 ...

  6. Keil4 每次选build 编译(F7)都全部编译的解决办法

    Keil4 每次选build 编译(F7)都全部编译的解决办法 http://blog.csdn.net/wchengshen/article/details/50440079 Keil4 每次选bu ...

  7. 谈谈android反编译和防止反编译的方法(转)

    谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...

  8. 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程

    一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...

  9. nginx 编译安装时的编译参数说明(不建议看)

    https://www.cnblogs.com/wazy/p/8108824.html ./configure --user=www \ #worker进程运行用户 --group=www \ #wo ...

  10. (转)unity3D 如何提取游戏资源 (反编译)+代码反编译

    原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资 ...

随机推荐

  1. 2017-2018-1 20179202《Linux内核原理与分析》第十二周作业

    C语言实现Linux网络嗅探器 一.知识准备 1.一般情况下,网络上所有的机器都可以"听"到通过的流量,但对不属于自己的数据包则不予响应.如果某个工作站的网络接口处于混杂模式,那么 ...

  2. supervisor安装(sentos7)

    其实现在网络上supervisor的教程有很多,比较杂,我找了几个对我来说是有帮助的教程,再结合自己的理解做一些笔记,可以供自己以后翻看. 链接:https://www.cnblogs.com/Hai ...

  3. POJ2104 K-th Number [整体二分]

    题目传送门 K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 69053   Accepted: 24 ...

  4. perf工具crash的问题

    perf抓取时系统crash的情况.找前同事了解到perf工具导致系统crash的一种情况, perf工具默认是使用cycles,这个硬件事件是使用NMI,可能会导致内核错误. 之前文档上的perf命 ...

  5. Linux安装系统选择 日报 18/06/23

    Linux安装系统选择 Centos7 程序体积7个G,如果是学习伊始, 注意不要选择那个体积小的,因为我装过之后进去发现这个wifie还要自己进行一些烈的命令才能连接成功.很麻烦的. 安装比较顺利但 ...

  6. Initializing the FallBack certificate failed . TDSSNIClient initialization failed

    安装SQL后服务不能启动,报错: 2014-03-24 14:33:10.06 spid13s     Error: 17190, Severity: 16, State: 1.2014-03-24 ...

  7. Django Q对象

    使用Q 对象进行复杂的查询¶ filter() 等方法中的关键字参数查询都是一起进行“AND” 的. 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象. Q 对象 (django.db ...

  8. ASP.net 简单分页的实现

    在自己的项目中有一个文章的管理页面需要用到分页, 这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中. 但是使用控件实在是太丑,虽然我写的也丑....... gridview 控件提供的分页 ...

  9. 【BZOJ 2337】 2337: [HNOI2011]XOR和路径(概率DP、高斯消元)

    2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1170  Solved: 683 Description ...

  10. Mac OS下不产生.DS_Store 隐藏文件和清理.DS_Store的方法

    一.清理.DS_Store的方法 1. 打开终端 (Macintosh HD > Applications > Utilities > Terminal)2. 输入命令: " ...