目录结构
1.lua代码
name = "skynet"
function add(a, b)
return a + b + 100
end
2.c代码
#include#include "../include/lua.h" #include "../include/lualib.h" #include "../include/lauxlib.h" int main() { lua_State *L = luaL_newstate(); // 打开lua luaL_openlibs(L); // 打开标准库 int retLoad = luaL_loadfile(L, "../script/test.lua"); if(retLoad == 0){ printf("load file success retLoad:%dn", retLoad); } lua_pcall(L, 0, 0, 0);// 调用lua //lua_getglobal(L, "name");//取lua层全局变量name并返回到栈顶 //const char *name = lua_tostring(L, 1); //printf("name = %sn", name); //lua_pop(L, 1); //清空栈 //调用函数 lua_getglobal(L, "add"); lua_pushnumber(L, 10); lua_pushnumber(L, 5); // 表示传入两个参数,返回一个值 int j; for (j=1;j<5;j++){ printf("num0:%fn",lua_tonumber(L, -j)); } int sumRet = lua_pcall(L, 2, 1, 0); printf("sumRet:%dn",sumRet); int val = lua_tonumber(L, -1); printf("sum:%dn",val); int i; for (i=1;i<5;i++){ printf("num:%fn",lua_tonumber(L, -i)); } lua_pop(L, -1); lua_close(L); printf("Hello worldn"); return 0; }
3.Makefile
main: gcc -lm -g -o main main.c /usr/local/lib/liblua.a -ldl clean: rm -rf main *.o



