gpt4 book ai didi

lua - 将 luasocket 添加到自带 lua 环境的程序(bizhawk)中

转载 作者:行者123 更新时间:2023-12-04 20:54:30 26 4
gpt4 key购买 nike

我试图让 luasocket 在 Bizhawk 的 lua 脚本环境中工作,但到目前为止还没有运气。我下载的是vc8版的luasocket here ,确保我安装了 vc8,并检查了 bizhawk 附带的 lua 版本:5.1

但是,当我启动脚本时,出现以下错误:

LuaInterface.LuaScriptException: error loading module 'socket.core' from file './libs/socket\core.dll':
Das angegebene Modul wurde nicht gefunden. (the given module was not found)

lua代码:
package.path = package.path..';./libs/lua/?.lua'
package.cpath = package.cpath..';./libs/?.dll'
local socket = require("socket")

文件系统结构:
libs
> lua
> socket
ftp.lua http.lua smtp.lua tp.lua url.lua
ltn12.lua
mime.lua
socket.lua
> socket
core.dll
> mime
core.dll

它似乎找到了文件,因为当我的文件结构错误时,它给了我实际的文件未找到错误。
我最好的猜测是 Bizhawk 附带的 lua 和外部 luasocket 库二进制文件之间存在某种不兼容,但我没有想法。

最佳答案

这家伙的设置:https://github.com/antogerva/emuHostUDP (解压到 emuhawk.exe 基目录)。他的示例似乎有效,但它可能不包含您需要的所有内容。以 HTTP 为例。

由于项目很复杂,而且 luasockets 示例很糟糕,这里有一个用于测试 http 的单行代码:

print(require("socket.http").request{ url = "http://www.google.com" });

按照他的模式,我应用了以下方法: lua 目录的内容到root; lua5.1.dll 到 root。请注意,我们不会使用 luasockets 中的 core.dll。这是因为 BizHawk 现在集成了它们;这对于解决 bizhawk 中 luasockets 的错误是必要的。

更具体地说,我们有
  • /emuhawk.exe
  • /Lua(未触及)
  • /Socket/ftp.lua、http.lua等
  • /ltn12.lua,socket.lua,mime.lua
  • /lua5.1.dll
  • /mytest.lua

  • (来自 http://files.luaforge.net/releases/luasocket/luasocket/luasocket-2.0.2/luasocket-2.0.2-lua-5.1.2-Win32-vc8.zip 的文件)

    我不能说为什么所有这些都是必要的,但我认为它的工作是奇迹,因为我们有一个定制的 lua。

    在使用 lua 时,如果您发现一个有效的目录结构,最好不要再与它搏斗。

    更新 :
    (可能已经过时)一旦你做了一些重要的事情,你可能会发现 bizhawk 崩溃。这似乎是由于与 luasocket 的“保护”系统发生冲突。检查 http.lua 并观察最后通过 socket.protect 发送函数的代码把它包起来。删除 socket.protect包装器,它应该可以解决这个问题。

    关于lua - 将 luasocket 添加到自带 lua 环境的程序(bizhawk)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428382/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com