加载模块时出错: ... undefined symbol: luaL_register

    ZeroBrain Studio (ZBS): 从文件 '/opt/zbstudio/bin/linux/x64/clibs53/rds/parser.so' 加载模块 'rds.parser' 失败:
        /opt/zbstudio/bin/linux/x64/clibs53/rds/parser.so: undefined symbol: luaL_register
    栈回溯(traceback):
        [C]: in ?
        [C]: in function 'require'
        lua/system/pgsql.lua:11: in main chunk

我需要将我从某个外部资源中获得的 C++ 模块添加到我的 ZeroBrane Studio 项目中 https://github.com/openresty/lua-rds-parser

我正在使用 lua 5.3 和在 ubuntu 19.04 上的 ZeroBrane Studio.

我按照上面提到的那个链接中描述的方式编译了 lua-rds-parser 库,并通过 sudo make 命令复制了 parser.so 到目录 /opt/zbstudio/bin/linux/x64/clibs53/rds/parser.so 中。从那里开始,ZeroBrane Studio 尝试在启动时找到它,当我在 hello.lua 文件中写入以下内容时:

    local parser = require("rds.parser")

但是,错误消息如下: undefined symbol: luaL_register

点赞
用户1442917
用户1442917

正如评论中已经指出的那样,您很可能是使用 Lua 5.1 库(它提供了 luaL_register)编译了 rds.parser,但是您尝试将它加载到 Lua 5.3 中,因为该函数已被弃用,所以 Lua 5.3 不提供此函数。您需要重新编译 rds.parser,以使其可以被 Lua 5.3 解释器加载。

2019-08-18 04:50:40