1、编译Lua下载到Lua的源代码以后,解压缩,里面会有4个文件夹外加一堆文件。其中src文件夹里面就是我们要用到的。
打开VS2003或者VS2005,新建一个空的Win32控制台应用程序,注意要是空的哦。这里假设该工程的目录在D:/lua。将刚才的src里的所有.h和.c文件拷贝到工程根目录下,也就是D:/lua下面。在VS中的“解决方案”视图中,右键点击“头文件”,添加现有项,将刚才拷贝过来的所有的.h文件添加到工程里,同样地把所有的.c文件添加到“源文件”目录中。将当前配置由debug改为release,从主菜单中进入项目->属性,找到“常规”选项卡,将右边的“配置类型”改为“静态库(.lib)”。然后生成解决方案就行了。此时我们在D:/lua/Release下面的一大堆.obj文件中会找到一个叫做lua.lib的文件,就是它了。
2、使用Lua
同样新建一个空的Win32控制台应用程序,假设工程目录是D:/test。在工程根目录下面新建一个叫做lua的目录,也就是D:/test/lua,用于存放lua的头文件和库文件。将src里的所有.h文件拷贝到刚才新建的目录里。在解决方案中新建一个“lua”文件夹,将D:/test/lua目录中所有的文件加入进去。然后在源文件里面新建一个main.cpp,作为控制台应用程序的入口文件。mail.cpp的最初代码如下, 这个是一个Lua 代码的解释器, 在Console 里敲入Lua 代码, 回车就可以运行了。
extern "C"{ #include #include #include #include #include }; int main(void) { char buff[256]; int error; lua_State* L = luaL_newstate(); /*Open Lua*/ luaL_openlibs(L); /*Open standard lib*/ while (fgets(buff, sizeof(buff), stdin) != NULL) { error = luaL_loadbuffer(L, buff, strlen(buff), "line") || lua_pcall(L, 0, 0, 0); if(error){ fprintf(stderr, "%s", lua_tostring(L, -1)); lua_pop(L, 1); /*pop up error info from the stack*/ } } lua_pushnil() lua_close(L); return 0; }
另外一段代码,从文件中载入:
void load(lua_State* L, const char* fname, int* w, int* h){ if (luaL_loadfile(L, fname) || lua_pcall(L, 0, 0, 0)){ ERROR(L, "can not run config. file: %s", lua_tostring(L, -1)); } }