#include <stdio.h>
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"E:\\luaSRC\\lua5.1\\lib\\static\\lua5.1.lib")
//test.lua
/*
--变量定义
width=1 ;
height=2 ;
--lua函数定义,实现加法
function sum(a,b)
return a+b ;
end
*/
/*Lua解释器指针*/
lua_State* L;
int main ( int argc, char *argv[] )
{
/*初始化Lua*/
L = luaL_newstate();
/*载入Lua基本库*/
luaL_openlibs(L);
/*加载lua脚本*/
luaL_dofile(L, "test.lua"); //luaL_dofile之后 把文件编译成代码 然后把变量和函数都存在全局globals里面
//这里用dofile就不用pcall
//luaL_loadfile(L, "test.lua");
//int iError = lua_pcall(L, 0, 0, 0);
//if (iError)
//{
// lua_close(L);
// return 1;
//}
/*调用lua中的函数sum*/
int a = 11 ;
int b = 12 ;
lua_getglobal(L,"sum"); //把刚刚上面globals里面的名为sum的函数压栈
lua_pushinteger(L,a) ;
lua_pushinteger(L,b) ;
if( lua_pcall(L,2,1,0) != 0) //lua_pcall就是lua_call的返回错误版 第二个参数是调用sum需要2个参数 第三个参数是调用sum后有一个返回值 第4个参数和返回错误编号有关
luaL_error(L, "error running function `add': %s",lua_tostring(L, -1));
printf("sum:%d + %d = %ld\n",a,b,lua_tointeger(L,-1)) ;
lua_pop(L,1);
/* 清除Lua */
lua_close(L);
return 0;
}