vs2010静态编译cjson2.1

因自己的一个软件内嵌了lua并且要用到json,最近几天就查找了几个lua下能用的json,cjson用c写的,速度很快,于是就想把cjson作为静态库的方式添加到工程。网上没有找到教程只好自己来



1、下载lua5.2源码和cjson的源码

2、lua5.2直接作为vs2010的一个静态库工程编译即可,无需任何改动

3、cjson放到lua目录下并且在lua工程里添加”筛选器“cjson,在csjon筛选器里把cjson目录下的所有文件全部添加进去

4、lua和cjson都需要做一些修改,修改lua是为了把cjson作为静态库添加进去;修改cjson是因为这个是用c写的对vs2010支持的不是很好,具体修改如下


修改的地方:

lua5.2的源码改动:

1、lualib.h里面添加:

#define LUA_CJSONLIBNAME	"cjson"
LUAMOD_API int (luaopen_cjson) (lua_State *L);

2、linit.c里修改loadedlibs数组, //1234注释的地方是我添加的
static const luaL_Reg loadedlibs[] = {
  {"_G", luaopen_base},
  {LUA_LOADLIBNAME, luaopen_package},
  {LUA_COLIBNAME, luaopen_coroutine},
  {LUA_TABLIBNAME, luaopen_table},
  {LUA_IOLIBNAME, luaopen_io},
  {LUA_OSLIBNAME, luaopen_os},
  {LUA_STRLIBNAME, luaopen_string},
  {LUA_BITLIBNAME, luaopen_bit32},
  {LUA_MATHLIBNAME, luaopen_math},
  //1234
  {LUA_CJSONLIBNAME, luaopen_cjson},
  {LUA_DBLIBNAME, luaopen_debug},
  {NULL, NULL}
};

如果上面的修改还是不懂怎么弄就仿照luaopen_math的添加方式,看看就明白了,很容易


CJson的改动

相对来说这个改动多一点,不过只要仔细的分析下还是很容易的

1、删除fpconv.c

2、fpconv.h修改成下面的样子,其中//1234后面的是我添加的

#define FPCONV_G_FMT_BUFSIZE   32
//1234
#define USE_INTERNAL_FPCONV
//1234
#define inline __inline
#ifdef USE_INTERNAL_FPCONV
static inline void fpconv_init()
{
    /* Do nothing - not required */
}
#else
extern inline void fpconv_init();
#endif

extern int fpconv_g_fmt(char*, double, int);
extern double fpconv_strtod(const char*, char**);

3、lua_cjson.c的前面添加如下代码:(lua.h和lauxlib.h的位置自己修改)

#include "..\\lua.h"
#include "..\\lauxlib.h"

#include <float.h>
#define isnan(x) ((x) != (x))
#define isinf(x) (!_finite(x) && !_isnan(x))
#define strncasecmp  _strnicmp 

编译lua工程,没有错误就ok了。使用方法:在自己的脚本里添加:

local json = require("cjson")


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值