LuaSQLite3 搭建使用过程

环境:

Lua 5.1 +  LuaSQLite3 0.9.3 + SQLite 3.12.0 + luarocks 2.3.0

Cocos2dx  v3.10

Window7 64bit   + VS2015

1. Lua环境搭建

http://www.lua.org/   下载自己需要版本 。这里下5.1lua 官网:

打开VS 工具->VS命令提示

执行etc\luavs.bat (注意是\ 不是/)入到lua的根目录  

在src 会生成对应的dll,exe等

2.Luarocks 


下面为蓝色字为引用大神的介绍,引用网址后面贴出

它就是一个管理Lua开源模块的工具,可以用它快速安装开源模块,譬如我用Lua封装了网络模块,提交到Luarocks,这样别人就可以快速的下载安装到他的操作系统中,甚至项目中都不必引入之类的操作,但是这点在Windows上真的是不完善的,而且即便是后来我也是不怎么会,我的作法是,把Luarocks编译好的dll文件直接放到我的项目可执行文件的同级目录,mac中会好些安装的文件直接就装在了环境变量存在的目录,不管怎样看着他的说明文档Luarocks总能很快的装到自己的操作系统中。


下载Luarocks  :   https://luarocks.org/

解压进入根目录 打开cmd 执行 install.bat/?  可以看到安装需要的一些配置信息

这里配置了刚刚编译的lua解释器的目录 执行 install.bat /LUA E:\lua-5.1.5\src 进行安装




安装成功后

即可进入LuaRocks的目录,一般为:C:\Program Files \LuaRocks

在此目录控制台输入luarocks ,可看到对应信息即安装成功


3.利用LuaRocks 安装 LuaSqlite

引用:

之后就可以通过Luarocks提供的命令安装lsqlite3啦,关于那个命名坑,我这里要说一下,你如果通过这个命令安装:luarocks install luasql-sqlite3 你就大错特错了,你应该通过这个命令安装,luarocks install lsqlite3这才是你真正需要的东西。关于名称坑在那里你们体会一下吧。

安装过程在Windows上需要指定Sqlite_dir Sqlite_incdir,根据名称的意思指定正确的目录就好了,这样需求也需要你自己通过Sqlite3官网下载的东西编译一份静态库。方法就不详细说了。若是这一步在Mac上是不需要制定库目录的,实践告诉我的,呵呵。这里还要提一下,你会看到cocos有编好的sqlite3库文件,及头文件,在xxx\frameworks\cocos2d-x\external\sqlite3,最好不要用那个,因为你lsqlite3下载的是最新版本的,你的sqlite3却不用最新版本,编译过程会报一个错的,这个错很难让你想到是因为版本不匹配而造成的。


因此下面进行sqlite的配置

下载sqlite:  http://sqlite.org/

下载解压,用Vs新建项目编译静态库 得到sqlite3.lib

然后执行:

luarocks install lsqlite3 SQLITE_DIR=E:/sqlite/sqlite-amalgamation-3120000 SQLITE_INCDIR=E:/sqlite/sqlite-amalgamation-3120000

安装成功:



在E:\lua-5.1.5\src\systree\lib\lua\5.1 中能看到lsqlite3.dll 


4.将lsqlite3 引入自己项目

引用

因为版本的原因,请在项目目录xxx\frameworks\cocos2d-x\external\lua里创建lsqlite3目录

解压(分别都是在官网下载的最新版本)

lsqlite3_fsl09w.zip

sqlite-amalgamation-201507231639.zip

将解压出来的源文件和头文件

sqlite3ext.h

sqlite3.h

sqlite3.c

lsqlite3.c

拷贝到文件夹中

在目录中新建lsqlite3.h头文件

#ifndef __LSQLITE3_H__
#define __LSQLITE3_H__

#include "lauxlib.h"

LUALIB_API int luaopen_lsqlite3(lua_State *L);

#endif
修改lsqlite3.c文件增加如下两行,包含刚才新建的头文件及sqlite3的头文件

#include "lsqlite3.h"
#include "sqlite3.h"

修改xxx\frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual\lua_extensions.c文件,修改如下

#include "luasocket/luasocket.h"
#include "luasocket/mime.h"
#include "lsqlite3/lsqlite3.h"

static luaL_Reg luax_exts[] = {
    {"socket.core", luaopen_socket_core},
    {"mime.core", luaopen_mime_core},
	{"lsqlite3", luaopen_lsqlite3},
    {NULL, NULL}
};

在VS2013中打开解决方案,找到liblua项目,新建lsqlite筛选器,里面添加-现有项,把新建目录lsqlite3中的头文件及源文件均添加进去,生成项目,应该不会存在问题,其实若是不打包及跨平台的话(怎么可能)你还可以这样操作,你就不用下载sqlite3了,直接用cocos2dx提供的sqlite3版本,xxx\frameworks\cocos2d-x\external\sqlite3,这样就要求你在lsqlite3.cpp中包含sqlite3.h的目录要改一下,这时,你的liblua项目就可以仅添加lsqlite3.h和lsqlite3.cpp文件啦,这样liblua是可以编译通过的,但是编我们项目的时候会报sqlite3的函数未定义,一看就是缺少库引用。就把我们的项目中添加库引用。这样程序就能正常编译啦


最后按照大神指导进行编译,编译成功。


注: 如果报全局错误USE " cc.exports.sqlite3 = value " INSTEAD OF SET GLOBAL VARIABLE,

要在config.lua 中将CC_DISABLE_GLOBAL 置为false !




------------------------------------------------挥泪分割线------------------------------------------------------

感谢大神们经验分享,帮助了我很多,网址贴在这里

http://www.bubuko.com/infodetail-1023445.html

http://blog.csdn.net/u012735451/article/details/21693607

www.maiziedu.com/course/cocos2d-x/166-1215/

十分感谢

------------------------------------------------挥泪分割线------------------------------------------------------

你可能感兴趣的:(日志)