luaopen函数
2011-3-9 8:10:20
收藏:0
阅读:182
评论:3
我在 lua 示例代码中发现了下面这些调用:
luaopen_table(L);
luaopen_io(L);
luaopen_string(L);
luaopen_math(L);
我在 lua 头文件中搜索时,发现了其他带有 luaopen 的函数:
LUALIB_API int (luaopen_base) (lua_State *L);
LUALIB_API int (luaopen_table) (lua_State *L);
LUALIB_API int (luaopen_io) (lua_State *L);
LUALIB_API int (luaopen_os) (lua_State *L);
LUALIB_API int (luaopen_string) (lua_State *L);
LUALIB_API int (luaopen_math) (lua_State *L);
LUALIB_API int (luaopen_debug) (lua_State *L);
LUALIB_API int (luaopen_package) (lua_State *L);
请问这些函数的意义是什么?例如,如果我不调用 luaopen_table,那么我能否使用表呢?我没有找到任何有关这方面的文档!
原文链接 https://stackoverflow.com/questions/5242958
点赞
stackoverflow用户804870
您需要将它们推入堆栈,以便像调用普通 Lua C 函数一样调用它们。
lua_State *l = lua_open();
lua_pushcfunction(l,luaopen_base);
lua_call(l,0,0);
lua_pushcfunction(l,luaopen_math);
lua_call(l,0,0);
lua_pushcfunction(l,luaopen_string);
lua_call(l,0,0);
lua_pushcfunction(l,luaopen_table);
lua_call(l,0,0);
2011-06-18 21:12:03
stackoverflow用户264751
对于那些正在查找如何在现代 Lua 中使用这些函数的人:
从 Lua 5.3 开始,您需要luaL_requiref
这些函数,基于 luaL_openlibs 中的源代码。我在任何手册中都没有找到这方面的参考。这里是一个示例,仅打开允许 Lua 向标准输出print
的基本库。
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
int main( int argc, char *argv[] ) {
lua_State *lua = luaL_newstate();
luaL_requiref( lua, "_G", luaopen_base, 1 );
lua_pop( lua, 1 );
luaL_dostring( lua, "print \"Hello, lua\"" );
lua_close( lua );
return 0;
}
我无法确定所有这些库的确切含义,以及不加载它们会对您产生什么影响,但您可以使用上述示例单独加载它们。例如,
luaL_requiref( lua, LUA_IOLIBNAME, luaopen_io, 1 );
lua_pop( lua, 1 );
将仅加载 I/O 库。另请参见手册。
2019-07-24 19:40:35
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果你正在使用最新版本的 Lua 5.1,参考手册中有一个答案:
[...]
是的,如果你没有导入表库,你仍然可以使用表格,因为它们是内置的。你仅仅无法访问表操作函数。