gpt4 book ai didi

c - 错误加载模块 undefined symbol : luaL_setfuncs

转载 作者:行者123 更新时间:2023-12-01 16:02:57 28 4
gpt4 key购买 nike

我正在尝试创建一个从 lua 脚本调用的 C 模块。我正在研究 debian linux。我正在使用 mysql-proxy 和 lua 5.2。我已经创建(从教程中复制)了一些要调用的示例函数。

加载器定义如下:

int luaopen_luacall(lua_State* l)
{

luaL_newlibtable(l, luacall);
luaL_setfuncs(l, luacall, 0);
return 1;
}

要从 lua 中调用它,我使用以下代码:

luacall = require("luacall")
local f = luacall.fun1()

我用这个命令编译了它:

g++ -shared -Wl,-E,-soname,libluacall.so -o luacall.so luacall.c  -fPIC -llua -ldl

当我尝试运行脚本时,我在 require 命令上收到以下错误:

 error loading module 'luacall' from file '/usr/lib/mysql-proxy/lua/luacall.so':
/usr/lib/mysql-proxy/lua/luacall.so: undefined symbol: luaL_setfuncs

我真的迷失在我做错了什么。

最佳答案

在构建 Lua 模块时永远不要使用 -llua。 Lua 解释器本身已经与 liblua 链接,并在加载模块时满足这些符号。将您的模块与 liblua 链接会与解释器发生冲突。

关于c - 错误加载模块 undefined symbol : luaL_setfuncs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21307312/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com