2012-09-21 3 views
1

LUA 5.1 및 lsqlite3 소스 코드를 다운로드하여 SQLite3 및 lsqlite3 (단 몇 개의 .c 및 .h 파일)을 추가하고 컴파일하고 실행하는 Visual C++ Express 프로젝트를 쉽게 준비했습니다.lsqlite3 예제 실행 방법

"main"함수와 함께 엔트리 포인트로 lua.c를 사용하고 있으며, visual studio 프로젝트 luac.c 파일에서 제거했습니다. .exe를 실행하면 기본 lua 명령 (예 : print("hello world"))을 구문 분석하는 명령 줄이 표시되고 정상적으로 작동합니다. 표준 루아 중 하나를 시작 는 (5.1) 예뿐만 아니라 잘 작동 (예 dofile("bisec.lua")를 입력),하지만 난 lsqlite3에서 하나 개 .lua 파일을하려고하면 나는 다음과 같은 오류가 : 나는 패키지를 lsqlite3 등록하려면 어떻게

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-0.8-1.rockspec" 이 파일과 관련이 있다고 의심되는 파일을 발견했지만 내 용도 나 사용 방법에 도움이된다면 그렇지 않습니다.

+4

는 *가 응답 *의 대답을 넣어하지 문제. Stack Overflow는 포럼이 아닌 Q & A 사이트입니다. 자신의 질문에 대답해도 괜찮지 만 "답변 게시"버튼을 사용해야합니다. –

답변

0

I think I got it.

Add "LUA_API int luaopen_lsqlite3(lua_State *L) ;" to lua.h

in file lua.c, in function "static int pmain (lua_State *L)" after the line "luaL_openlibs(L); /* open libraries */" add the line "luaopen_lsqlite3(L);"

Change the first line in all of the lsqlite3 example files from "require("lsqlite3")" to "require("sqlite3")"

Doing these 3 points had the example scripts run fine, or at least with no error.

0
  1. 로드 sqlite3를 원하고 구축 -> sqlite3.dll을 너의 될 것입니다.

  2. lsqlite 소스를로드하고 빌드하면 (sqlite3.a 및 일부 헤더가 필요함) -> lsqlite3.dll이 표시됩니다. 당신의 루아에

  3. 넣어 lsqlite3.dll 디렉토리를 clibs (\ 루아 \ 5.1 \ clibs)

  4. 이 시도 :

    require("lsqlite3") 
    local db = assert(sqlite3:open_memory()) 
    
관련 문제