Lua c API - 添加号码到新库
Lua c API - Add number to new lib
(Lua 5.2)
我正在编写从 ncurses 到 Lua 的绑定,我想包含一些函数以外的值。我目前正在绑定这样的函数:
#define VERSION "0.1.0"
// Method implementation
static int example(lua_State* L){
return 0;
}
// Register library using this array
static const luaL_Reg examplelib[] = {
{"example", example},
{NULL, NULL}
}
// Piece it all together
LUALIB_API int luaopen_libexample(lua_State* L){
luaL_newlib(L, examplelib);
lua_pushstring(L, VERSION);
// Set global version string
lua_setglobal(L, "_EXAMPLE_VERSION");
return 1;
}
这会生成一个 table,其中包含几个函数(在本例中只有一个)和一个全局字符串值,但我想将一个数字值放入库中。因此,例如,现在,lib = require("libexample");
将 return 一个具有一个功能 example
的 table,但我希望它也有一个数字 exampleNumber
。我将如何做到这一点?
谢谢
只需在模块中推送一个数字table。
#include <lua.h>
#include <lauxlib.h>
static char const VERSION[] = "0.1.0";
// Method implementation
static int example(lua_State* L){
return 0;
}
// Register library using this array
static const luaL_Reg examplelib[] = {
{"example", example},
{NULL, NULL}
};
// Piece it all together
LUAMOD_API int luaopen_libexample(lua_State* L){
luaL_newlib(L, examplelib);
// Set a number in the module table
lua_pushnumber(L, 1729);
lua_setfield(L, -2, "exampleNumber");
// Set global version string
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)
(Lua 5.2)
我正在编写从 ncurses 到 Lua 的绑定,我想包含一些函数以外的值。我目前正在绑定这样的函数:
#define VERSION "0.1.0"
// Method implementation
static int example(lua_State* L){
return 0;
}
// Register library using this array
static const luaL_Reg examplelib[] = {
{"example", example},
{NULL, NULL}
}
// Piece it all together
LUALIB_API int luaopen_libexample(lua_State* L){
luaL_newlib(L, examplelib);
lua_pushstring(L, VERSION);
// Set global version string
lua_setglobal(L, "_EXAMPLE_VERSION");
return 1;
}
这会生成一个 table,其中包含几个函数(在本例中只有一个)和一个全局字符串值,但我想将一个数字值放入库中。因此,例如,现在,lib = require("libexample");
将 return 一个具有一个功能 example
的 table,但我希望它也有一个数字 exampleNumber
。我将如何做到这一点?
谢谢
只需在模块中推送一个数字table。
#include <lua.h>
#include <lauxlib.h>
static char const VERSION[] = "0.1.0";
// Method implementation
static int example(lua_State* L){
return 0;
}
// Register library using this array
static const luaL_Reg examplelib[] = {
{"example", example},
{NULL, NULL}
};
// Piece it all together
LUAMOD_API int luaopen_libexample(lua_State* L){
luaL_newlib(L, examplelib);
// Set a number in the module table
lua_pushnumber(L, 1729);
lua_setfield(L, -2, "exampleNumber");
// Set global version string
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)