3

我正在使用luajit 2.0.3,我想在我的项目中使用luasocket。当require socket in 时jit,它报错

"error loading module 'socket.core' from file '/usr/local/lib/lua/5.1/socket/core.so': /usr/local/lib/lua/5.1/socket/core.so: undefined symbol: lua_callk. 

luasocket 3.0我用debian 5.0lua5.1编译。我搜索了很多答案,但没有任何帮助。我用 lua5.1 在 debian 5.0 中编译了 luasocket 3.0。

4

1 回答 1

1

LuaJIT 与 Lua 5.1 兼容 ABI,这意味着,您可以针对标准 Lua 头文件编译 C 模块,然后从 Lua 或 LuaJIT 加载它。

从报错信息来看,LuaSocket 需要该函数lua_callk,但是,就目前而言,该函数在 LuaJIT 中并没有实现。已经有人要求实现这个功能lua_pcallklua_yieldk但是这样做需要 LuaJIT 切换到 Lua 5.2 ABI [1]。

我建议您切换到旧版本的 LuaSocket(例如 2.0.2)或检查是否可以编译 LuaSocket 以保持 5.1 ABI 兼容性。

[1] http://www.freelists.org/post/luajit/Yielding-across-C-boundaries,3

于 2015-11-06T00:42:55.100 回答