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));
}
}