#include <stdio.h>
#include <string.h>
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main (void) {
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* 创建Lua环境 */
luaL_openlibs(L); /* 打开所有标准库 */
while (fgets(buff, sizeof(buff), stdin) != NULL) {
error = luaL_loadstring(L, buff) || lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "%s\n", lua_tostring(L, -1));
lua_pop(L, 1); /* 从栈中弹出错误消息 */
}
}
lua_close(L);
return 0;
}
lua.h定义了Lua提供的基础函数,包括创建Lua环境、调用Lua函数,它的定义是以lua_开头的。
lauxlib.h(auxiliary library, 简写auxlib)定义了辅助库提供的函数,它的所有定义都是luaL_开头的。
lualib.h定义了打开指定的标准库的函数。而luaL_openlibs则可以打开所有的标准库。
luaL_newstate()用于创建新环境。
luaL_loadstring和lua_pcall调用成功时返回0,若失败将错误消息压入栈。lua_pcall用于在栈中弹出调用函数。
如果你用C 方式来编译它,但用在C++中,那么你需要象下面这样来包含lua.h头文件。
extern "C" {
#include <lua.h>
}