【发布时间】:2014-02-13 22:48:19
【问题描述】:
我正在尝试创建一个要从 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 5.2 吗?我不是指您在 g++ 中链接到的库,我的意思是您在哪里运行执行
require? 的脚本 -
我已经卸载了 Lua 5.1。我在系统上拥有的唯一 LUA 二进制文件是 Lua 5.2。我不太确定什么或如何调用 mysql-proxy。我试图包含命令 print
("VERSION ", lua_version())但我得到一个错误 `attempt to call global 'lua_version' (a nil value)' -
lua -v打印什么? -
C++中定义的luacall数组是什么?
-
luacall 是我要调用的库的名称。我不确定是否理解数组问题。