目录结构
1.lua代码
name = "skynet"
function add(a, b)
return a + b + 100
end
2.c代码
#include <stdio.h>
#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:%d\n", retLoad);
}
lua_pcall(L, 0, 0, 0);// 调用lua
//lua_getglobal(L, "name");//取lua层全局变量name并返回到栈顶
//const char *name = lua_tostring(L, 1);
//printf("name = %s\n", 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:%f\n",lua_tonumber(L, -j));
}
int sumRet = lua_pcall(L, 2, 1, 0);
printf("sumRet:%d\n",sumRet);
int val = lua_tonumber(L, -1);
printf("sum:%d\n",val);
int i;
for (i=1;i<5;i++){
printf("num:%f\n",lua_tonumber(L, -i));
}
lua_pop(L, -1);
lua_close(L);
printf("Hello world\n");
return 0;
}
3.Makefile
main:
gcc -lm -g -o main main.c /usr/local/lib/liblua.a -ldl
clean:
rm -rf main *.o