cocos2dx3.5 sqlite的C++与lua绑定

来源:互联网 发布:淘宝 自助服务 编辑:程序博客网 时间:2024/06/03 17:28

1.首先下载luaSqlite的源代码http://lua.sqlite.org/index.cgi/index,下载sqlite的源代码 http://sqlite.org/

2.解压。拷贝其中的lsqlite3.c, sqlite3.c,sqlite3.h这几个文件到\cocos2d\cocos\scripting\lua\bindings\manual路径下(和CCLuaStack.cpp同一级目录)

3.在vs2012的解决方案中,选择liblua的项目,选择对应目录,把这几个文件导入进去。
4.在manual文件夹下新建一个文件lsqlite3.h。并写入如下代码保存
#ifndef __LSQLITE3_H__
#define __LSQLITE3_H__
 
#ifdef __cplusplus
extern "C" {
#endif
#include "tolua++.h"
#ifdef __cplusplus
}
#endif
 
int luaopen_lsqlite3(lua_State* L);
#endif
5.在 manual文件夹找到CCLuaStack.cpp ,把刚才新建的头文件包含进去。如:
extern "C" {
#include "lua.h"
#include "tolua++.h"
#include "lualib.h"
#include "lauxlib.h"
#include "lsqlite3.h"
}
并且在该文件的init函数下增加如下代码  
register_all_cocos2dx_spine_manual(_state);
register_glnode_manual(_state);
luaopen_lsqlite3(_state); //new code
编译构建项目

6.在你的lua文件中增加如下两行
local sqlite3 =require("sqlite3")
print("sqlite3  version"..sqlite3.version())

7.编译会报lua_Number的错误,我们只需要将下面这个段代码拿到函数开头去就好 

lua_Number n = (lua_Number)rowid; //移到这,c语言所有变量要在开头定义 。


8.打包apk的时候需要注意在android.mk中加入下面路径:

LOCAL_SRC_FILES := \

../../Classes/AppDelegate.cpp \
../../Classes/ide-support/SimpleConfigParser.cpp \
../../../cocos2d-x/cocos/scripting/lua-bindings/manual/lsqlite3.c \
../../../cocos2d-x/cocos/scripting/lua-bindings/manual/sqlite3.c \

1 0