"socket.core" 不是一个有效的 Win32 应用程序

阅读了 这个 后,我下载了 socket 的 x64 二进制文件,并将其替换到 lua 的 "clibs" 目录下,但并没有获得任何积极的结果。现在我需要一些帮助来解决我从 Eclipse 中收到的以下错误:

Exception in thread "main" com.naef.jnlua.LuaRuntimeException: error loading module 'socket.core' from file 'C:\Program Files (x86)\Lua\5.1\clibs\socket\core.dll':
    %1 is not a valid Win32 application.

    at com.naef.jnlua.LuaState.lua_pcall(Native Method)
    at com.naef.jnlua.LuaState.call(LuaState.java:555)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.run(JNLua51Launcher.java:128)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.main(JNLua51Launcher.java:143)

这是我的环境:

  • Windows 10 x64;
  • Lua 5.3;
  • LUA_PATH 被正确定义;
  • LUA_CPATH 被正确定义;

这是我的代码:

-- Requires
local socket = require 'socket'

-- Settings
host = "localhost"
port = 8384;

-- Program Start
print("程序开始")

-- Functions

local function main()

client = socket.connect(host, port)
client:send("测试!")
while true do
  s, status, partial = client:receive(1024)
  print(s or partial)
  if status == "closed" then
    break
  end
end
client:close()

end

main()
点赞
用户646619
用户646619

从 Lua 安装路径下的文件路径(C:\Program Files (x86)\Lua\5.1\clibs\socket\core.dll)看来,你已经安装了 32 位的 Lua,而你想要加载一个 64 位的 DLL。这是不行的,两种架构不能在一个进程中混合使用。

要么下载 32 位版本的 socket 模块,要么下载 64 位版本的 Lua 解释器。

2016-11-14 14:02:50