如何运行lsqlite3示例

我已经下载了LUA 5.1和lsqlite3源代码,并轻松准备好了Visual C++ express项目,可以编译和运行良好,向其中添加SQLite3和lsqlite3(只需要几个更多的.c和.h文件)。

我正在使用lua.c作为入口点和其“main”函数,并且已从Visual Studio项目中删除了luac.c文件。当我启动.exe时,它会向我显示一个命令行,解析基本的lua命令(例如'print(“hello world”)'),这很好用。 运行标准Lua(5.1)示例也可以正常工作(例如键入“dofile(“bisec.lua”)”),但是如果我尝试使用lsqlite3中的一个.lua文件,则会出现以下错误:

statement.lua:1: module 'lsqlite3' not found:
        no field package.preload['lsqlite3']
        no file '.\lsqlite3.lua'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\lua\lsqlite3.lua'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\lua\lsqlite3\init.lua'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\lsqlite3.lua'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\lsqlite3\init.lua'
        no file 'C:\Program Files (x86)\Lua\5.1\lua\lsqlite3.luac'
        no file '.\lsqlite3.dll'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\lsqlite3.dll'
        no file 'C:\Projects\lua-5.1.5_lsqlite3_integration\lua_5.1_lsqlite3_int
egration\Debug\loadall.dll'
stack traceback:
        [C]: in function 'require'
        statement.lua:1: in main chunk
        [C]: in function 'dofile'
        stdin:1: in main chunk
        [C]: ?

我如何注册lsqlite3包? 我找到了一个文件,我怀疑它与此有关,那就是:“lsqlite3-0.8-1.rockspec”,但我不知道它对我的目的是否有用,也不知道如何使用它。

点赞
用户1113772
用户1113772

我想我明白了。

将“LUA_API int luaopen_lsqlite3(lua_State *L);”添加到 lua.h

在文件 lua.c 中的函数“static int pmain(lua_State *L)”的行“luaL_openlibs(L); /* open libraries */”之后添加行“luaopen_lsqlite3(L);”。

将所有 lsqlite3 示例文件中的第一行从“require("lsqlite3")”改为“require("sqlite3")”。

执行这3个步骤后,示例脚本可以正常运行,或者至少不会出现错误。

2013-01-16 01:44:54
用户1927794
用户1927794
  1. 加载 sqlite3 源代码并构建它们-> sqlite3.dll 将成为你的。

  2. 加载 lsqlite 源代码并构建它们(这需要 sqlite3.a 和一些头文件)-> 你将得到 lsqlite3.dll。

  3. 将 lsqlite3.dll 放入你的 Lua clibs 目录下(\Lua\5.1\clibs)

  4. 尝试这样做:

    require("lsqlite3")
    local db = assert( sqlite3:open_memory() )
    
2013-01-22 22:30:46