cocos2dx Lua项目中添加Sqlite

1. 使用版本cocos2dx2.2.2 + VS2012,创建lua项目后,发现没有Sqlite,将添加的记录写下来:

 首先下载sqlite3和lsqlite3,直接放到工程中的classes下。

创建lsqlite3.h

#ifndef _LUA_SQLITE3_H_
#define _LUA_SQLITE3_H_
#include "lauxlib.h"

LUALIB_API int luaopen_lsqlite3(lua_State *L); 

#endif  /* ifndef _SQLITE3RTREE_H_ */


然后随便找个地方输入CCLuaStack, 按F12,进入 cpp文件

在bool CCLuaStack::init(void)前面添加:

#if __cplusplus
extern "C" {
#endif

#include "lsqlite3.h"
	static luaL_reg luax_my_libs[] = {
		{
			"lsqlite3",luaopen_lsqlite3
		},
		{
			NULL,NULL
		}
	};

#if __cplusplus
 }
#endif

然后在bool CCLuaStack::init(void)中修改代码:

    // Register our version of the global "print" function
    const luaL_reg global_functions [] = {
        {"print", lua_print},
        {NULL, NULL}
    };
    luaL_register(m_state, "_G", global_functions);

	luaL_reg *lib = luax_my_libs;
	lua_getglobal(m_state,"package");
	lua_getfield(m_state,-1,"preload");
	for (;lib->func;lib++)
	{
		lua_pushcfunction(m_state,lib->func);
		lua_setfield(m_state,-2,lib->name);
	}
	lua_pop(m_state,2);
	

    tolua_CocoStudio_open(m_state);


然后编译的时候,发现会报错

1>e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\projects\planeluagame\classes\lsqlite3.c(1275): error C2275: “lua_Number”: 将此类型用作表达式非法
1>          e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\scripting\lua\lua\lua.h(99) : 参见“lua_Number”的声明
1>e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\projects\planeluagame\classes\lsqlite3.c(1275): error C2146: 语法错误: 缺少“;”(在标识符“n”的前面)
1>e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\projects\planeluagame\classes\lsqlite3.c(1275): error C2065: “n”: 未声明的标识符
1>e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\projects\planeluagame\classes\lsqlite3.c(1276): error C2065: “n”: 未声明的标识符
1>e:\cocos2d-x-2.2.2\cocos2d-x-2.2.2\projects\planeluagame\classes\lsqlite3.c(1277): error C2065: “n”: 未声明的标识符

修改lua_Number, 在代码前面先声明一个 lua_Number n, 然后在使用 就可以了

你可能感兴趣的:(Lua)