Lua c API - 向新库添加数字

(Lua 5.2)

我正在将 ncurses 的绑定写入 Lua,并想包含一些除函数之外的值。我目前绑定函数如下:

#define VERSION "0.1.0"

// 方法实现
static int example(lua_State* L){
    return 0;
}

// 使用此数组注册库
static const luaL_Reg examplelib[] = {
    {"example", example},
    {NULL, NULL}
}

// 将所有内容组合在一起
LUALIB_API int luaopen_libexample(lua_State* L){
    luaL_newlib(L, examplelib);
    lua_pushstring(L, VERSION);
    // 设置全局版本字符串
    lua_setglobal(L, "_EXAMPLE_VERSION");
    return 1;
}

这将生成一个带有一些函数(在本例中只有一个)和全局字符串值的表,但我想在库中放置一个数字值。因此,例如,现在 lib = require("libexample"); 将返回一个带有一个函数 example 的表,但我希望它也有一个数字 exampleNumber。我该如何实现这一点?

谢谢

点赞
用户1944004
用户1944004
# 向模块表中推入一个数字。

```c
#include <lua.h>
#include <lauxlib.h>

static char const VERSION[] = "0.1.0";

// 方法实现
static int example(lua_State* L){
    return 0;
}

// 使用此数组注册库
static const luaL_Reg examplelib[] = {
    {"example", example},
    {NULL, NULL}
};

// 整合所有内容
LUAMOD_API int luaopen_libexample(lua_State* L){
    luaL_newlib(L, examplelib);

    // 设置模块表中的数字
    lua_pushnumber(L, 1729);
    lua_setfield(L, -2, "exampleNumber");

    // 设置全局版本字符串
    lua_pushstring(L, VERSION);
    lua_setglobal(L, "_EXAMPLE_VERSION");

    return 1;
}

然后使用以下命令编译:

gcc -I/usr/include/lua5.2 -shared -fPIC -o libexample.so test.c -llua5.2

使用方法:

local ex = require"libexample"
print(ex.exampleNumber)
2017-10-01 22:30:56