file:main.cpp
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
lua_State *L = lua_open(); //初始化lua
luaL_openlibs(L); //载入所有lua标准库
printf( "Press any key to run lua file.\n");
getch();
luaL_dofile(L, "add.lua"); //执行add.lua,将add函数加入lua_State栈中
lua_getglobal(L, "add"); //通过函数名取出函数地址压入栈
lua_pushnumber(L, 10); //将第一个参数压入栈
lua_pushnumber(L, 10); //将第二个参数压入栈
lua_pCall(L, 2, 1, 0); //调用add函数
int sum = (int)lua_tonumber(L, -1); //从lua_State栈中取出函数执行结果
lua_pop(L, 1); //将结果弹出栈
printf( "The sum is %d\n", sum );
getch();
lua_Close(L);
return 1;
}
file : add.lua
function add ( x, y )
return x + y
end