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