1.c函数封装成库,代码如下:
#include <stdio.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
//2 args
static int add(lua_State* L)
{
double a = luaL_checknumber(L,1);
double b = luaL_checknumber(L,2);
lua_pushnumber(L,a+b);
return 1; //1个返回值
}
static const luaL_reg mylibs[] =
{
{"add",add},
{NULL,NULL}
};
//1. 其函数名必须为luaopen_xxx,其中xxx表示library名称。Lua代码require "xxx"需要与之对应。
//2. 在luaL_register的调用中,其第一个字符串参数为模块名"xxx",第二个参数为待注册函数的数组。
int luaopen_myaddlib(lua_State* L)
{
const char* libName = "myaddlib";
luaL_register(L,libName,mylibs);
return 1;
}
2.在 lua中调用,代码如下:
require "myaddlib"
print(myaddlib.add(1,2))