如何运行lsqlite3示例

时间:2012-09-21 13:31:52

标签: sqlite debugging lua package

我已经下载了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” 但是,如果它对我的目的有用,也不会如何使用它,我不会这样做。

2 个答案:

答案 0 :(得分:0)

  

我想我明白了。

     

添加“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点后,示例脚本运行正常,或者至少没有错误。

答案 1 :(得分:0)

  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() )
    
相关问题