我正在尝试编写一个简单的Lua脚本,但时间函数出现了“加载模块”错误。

我正在尝试学习Lua,并且我正在遵循的教程有以下代码作为步骤:

 print("Welcome to")
 print("THE GAME")

我有一些编程经验,决定向前迈进一步:

 require "socket"

 function sleep(sec)
     socket.select(nil, nil, sec)
 end

 print("Welcome to.....")
 sleep(1.25)
 print("...")
 sleep(1.25)
 print("...")
 sleep(1.25)
 print("...")
 sleep(1.25)
 print("...")
 sleep(1.25)
 print("THE GAME")

由于某种原因,这个小的补充立即给了我一个错误:

  dave@dave-[my laptop]:~/Code/Lua/Test$ lua main.lua
  lua: error loading module 'socket.core' from file '/home/dave/torch/install/lib/lua/5.1/socket/core.so':
     /home/dave/torch/install/lib/lua/5.1/socket/core.so: undefined symbol: lua_pcall
  stack traceback:
     [C]: in ?
     [C]: in function 'require'
     /home/dave/torch/install/share/lua/5.1/socket.lua:12: in main chunk
     [C]: in function 'require'
     main.lua:1: in main chunk
     [C]: in ?

我不确定我是如何破坏这么简单的东西的。是我安装Lua的问题吗?我在Ubuntu 14.04上运行Lua 5.2.3。

点赞
用户734069
用户734069

lib/lua/5.1/socket/core.so

我正在运行 Lua 5.2.3

好的,这就是问题所在。Lua 不与早期“次要”版本具有二进制兼容性。因此,当您在 Lua 5.2 中执行时,无法加载为 Lua 5.1 构建的 .so。

假设 socket 库有一个 5.2 版本,那么您需要升级到该版本。如果您无法这样做,则需要降级到 Lua 5.1。

2015-12-27 02:08:56