官方发布库还是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()。