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>


分享到:


相關文章: