1

LUA 5.1 と lsqlite3 のソース コードをダウンロードし、SQLite3 と lsqlite3 (.c と .h ファイルをいくつか追加) を追加して、正常にコンパイルおよび実行される Visual C++ Express プロジェクトを簡単に準備しました。

「メイン」関数のエントリ ポイントとして lua.c を使用しており、ビジュアル スタジオ プロジェクトの luac.c ファイルから削除しました。.exe を起動すると、基本的な lua コマンド ( などprint("hello world")) を解析するコマンド ラインが表示され、これは正常に機能します。標準の Lua (5.1) の例の 1 つを起動しても問題なく動作します (例: と入力dofile("bisec.lua")) が、lsqlite3 の .lua ファイルを 1 つ試してみると、次のエラーが発生します。

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」というこれと関係があると思われるファイルを見つけましたが、それが私の目的や使用方法に役立つかどうかはわかりません。

4

2 に答える 2

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() )
    
于 2013-01-22T22:30:46.747 に答える
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 つのポイントを実行すると、サンプル スクリプトが正常に実行されるか、少なくともエラーなしで実行されます。

于 2013-01-16T01:44:54.730 に答える