我使用的是luajit 2.0.3,我想在我的项目中使用luasocket,在jit中require socket时,报错

"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.  

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

请您参考如下方法:

LuaJIT 与 Lua 5.1 ABI 兼容,这意味着您可以根据标准 Lua header 编译 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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!