lua调用c函数

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>


分享到:


相關文章: