如何在Lua C API中设置"require"以返回一个表/模块?
2014-4-30 15:13:19
收藏:0
阅读:75
评论:1
我想从 C API 中添加一个可 require 的模块。
--lua.lua
local c_module = require("c_module")
c_module.doWork()
我需要使用哪些 API 函数才能实现这个目标?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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中获取用户配置主目录的跨平台方法
在使用
require加载共享库时,Lua会查找一个名为luaopen_<name>的函数,其中<name>是模块名称,并将其中的点替换为下划线(例如,require "foo.bar"将查找luaopen_foo_bar,但连字符需要特殊处理,请参阅Lua手册)。该函数应为常规的
lua_CFunction类型;也就是说,它以lua_State*作为参数,并返回一个int。require会将打包名称作为参数调用此函数,你从函数中返回的值是require存储和返回的值。以下是名为
foo的模块的示例:static int bar(lua_State* L) { // ... } int luaopen_foo(lua_State* L) { lua_newtable(L); // 创建打包表 // 推入和分配每个函数 lua_pushcfunction(L, &bar); lua_setfield(L, -2, "bar"); // ... // 返回打包表 return 1; }(这是针对Lua 5.1的,但是对于5.2而言,相应的代码非常相似,甚至相同。还要确保
luaopen_函数从共享库中导出。)有关C加载器的完整行为,请参阅此处:http://www.lua.org/manual/5.1/manual.html#pdf-package.loaders