【问题标题】:How to run lsqlite3 example如何运行 lsqlite3 示例
【发布时间】:2012-09-13 22:32:48
【问题描述】:

我已经下载了 LUA 5.1 和 lsqlite3 源代码,并轻松准备了一个 Visual C++ express 项目,该项目可以正常编译和运行,并添加了 SQLite3 和 lsqlite3(只是多了几个 .c 和 .h 文件)。

我使用 lua.c 作为其“主要”功能的入口点,并且我已从 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” 但如果它对我的目的或如何使用它有用,我不会这样做。

【问题讨论】:

  • 把答案放在answer中,而不是问题中。 Stack Overflow 是一个问答网站,而不是论坛。可以回答您自己的问题,但您需要使用“发布您的答案”按钮来回答。

标签: sqlite debugging lua package


【解决方案1】:

我想我明白了。

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

在 lua.c 文件中,在函数“static int pmain (lua_State *L)”中,在“luaL_openlibs(L); /* 打开库 */”行之后添加“luaopen_lsqlite3(L);”行

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

完成这 3 点后,示例脚本运行良好,或者至少没有错误。

【讨论】:

    【解决方案2】:
    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() )
      

    【讨论】:

      猜你喜欢
      • 2016-04-26
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多