1.c函数封装成库,代码如下:
<code>#include #include #include #include //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; }/<code>
2.在 lua中调用,代码如下:
<code>require "myaddlib" print(myaddlib.add(1,2))/<code>