我正在尝试创建一个从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/