官方發布庫還是5.1.4的,而且由于失誤導致必須帶著2個dll文件。最新的源代碼是5.2.1的,我們自己編譯吧,目標是靜態庫,免得帶著 dll 滿世界跑。
下載源代碼:http://www.lua.org/ftp/lua-5.2.1.tar.gz
解壓備用。這里說句題外話,lauxlib.h 和 lauxlib.c 我認為也應該是官方的失誤,本意應該是 luaxlib.h 和 luaxlib.c 吧?
新建一個 static library 工程,把解壓得到的目錄下的src子目錄中的所有.h和.c文件拷貝到新工程目錄下。
工程中刪除自動生成的 main.c 文件,添加進除lua.c、luac.c和lua.hpp外的所有.h和.c文件。
編譯,得到 libLua.a 即是庫。注意,如果你沒有重設過輸出目錄,這個 liblua.a 文件應該在你的源代碼目錄里。
然后把 libLua.a 放到編譯器的 Lib 目錄下,把 lauxlib.h、lua.h、luaconf.h、lualib.h 放到編譯器的 include 目錄下(C++用戶再添加個 lua.hpp),最好新建個 lua 子目錄存放頭文件更清晰。
其實最關鍵就是除開不必要的文件,實際上:
編譯 lua(lua.exe,解析器) 時刪除luac.c,加入lua.c。
編譯 luac(luac.exe,字節碼編譯器)時刪除lua.c,加入luac.c。
編譯 lib和dll(liblua.a和lua.dll,庫)時把lua.c和luac.c都刪除。
另外要注意:lua 5.2.1 創建一個指向Lua解釋器的指針的函數 lua_open 修改為 luaL_newstate。
即把工程從lua5.1庫轉到5.2庫時,在調用 lua_open() 的地方都需要修改為 luaL_newstate()。
轉自:
http://my.oschina.net/u/580100/blog/108468