【发布时间】:2021-12-31 01:24:50
【问题描述】:
我目前正在为Noita 开发一个模组,因此我正在使用它
我是一名软件开发人员,但 c、gcc 和 lua 对我来说是新的。
我在当前主 github 文件夹内的 windows 10 上使用 msys2(要清楚我使用 mingw32)使用以下命令自行构建 lua-enet:
gcc -O -shared -o enet.dll enet.c -lenet -llua5.1 -lws2_32 -lwinm --verbose
和
我这样做了好几次,因为我遇到了类似的错误
找不到指定的模块。
enet 不是有效的 Win32 应用程序
但是上面的 gcc 命令在 DevBuild / Debug 模式下运行 Noita 时有效。 我可以使用Decoda 对其进行调试,并看到库已加载。
但是当我通过 Steam 运行 Noita 时出现以下错误:
'mods/noita-mp/init.lua' 处的 Lua (DoFile) 错误:从文件 'mods\noita-mp\files\libs\ 加载模块 'enet1317_lua-enet-master21-10-2015_lua5-1_32bit' 时出错enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll': Das angegebene Modul wurde nicht gefunden。
- enet.dll 64 位版本一。 (没用)
- enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll 32bit 版本,使用上面的 gcc 命令构建。 (仅适用于调试模式)
附加打印:
Mod enabled: noita-mp 0
LUA: file_util.lua | Noitas root absolute path set to C:\Program Files (x86)\Steam\steamapps\common\Noita
LUA: ;.\?.lua;C:\Program Files (x86)\Steam\steamapps\common\Noita\lua\?.lua;C:\Program Files (x86)\Steam\steamapps\common\Noita\lua\?\init.lua;;C:\Program Files (x86)\Lua\5.1\lua\?.luac;mods\noita-mp\files\libs\?.lua;C:\Program Files (x86)\Steam\steamapps\common\Noita\mods\noita-mp\files\libs\?.lua;
LUA: .\?.dll;C:\Program Files (x86)\Steam\steamapps\common\Noita\?.dll;C:\Program Files (x86)\Steam\steamapps\common\Noita\loadall.dll;mods\noita-mp\files\libs\?.dll;C:\Program Files (x86)\Steam\steamapps\common\Noita\mods\noita-mp\files\libs\?.dll;
LUA: Trying to load enet c library by file name with 'enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll' loading.. Does file exists? false
LUA: nil
LUA: Trying to load enet c library by relative path with 'mods\noita-mp\files\libs\enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll' loading.. Does file exists? true
LUA: nil
LUA: Trying to load enet c library by absolute path with 'C:\Program Files (x86)\Steam\steamapps\common\Noita\mods\noita-mp\files\libs\enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll' loading.. Does file exists? true
LUA: nil
LUA: Trying to load enet c library by absolute path with 'C:\Program Files (x86)\Steam\steamapps\common\Noita\mods\noita-mp\files\libs\enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll' loading.. Does file exists? true
LUA: nil
LUA: enet c library 'enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll' was loaded by require load.
Lua (DoFile) error at 'mods/noita-mp/init.lua': error loading module 'enet1317_lua-enet-master21-10-2015_lua5-1_32bit' from file 'mods\noita-mp\files\libs\enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll':
Das angegebene Modul wurde nicht gefunden.
init.lua
dofile("mods/noita-mp/files/scripts/util/util.lua")
SetNoitaRootAbsolutePath()
-- Need to add module package to package path, because relative paths are not working
package.path = package.path .. ";"
.. string.gsub(GetRelativePathOfRequiredLibs() .. "/?.lua;", "/", "\\")
.. string.gsub(GetAbsolutePathOfRequiredLibs() .. "/?.lua;", "/", "\\")
print(package.path)
package.cpath = package.cpath .. ";"
.. string.gsub(GetRelativePathOfRequiredLibs() .. "/?.dll;", "/", "\\")
.. string.gsub(GetAbsolutePathOfRequiredLibs() .. "/?.dll;", "/", "\\")
print(package.cpath)
ModMagicNumbersFileAdd("mods/noita-mp/files/data/magic_numbers.xml")
local enet = nil
if enet == nil then
local fileName = "enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll"
print("Trying to load enet c library by file name with '" .. fileName .. "' loading.. Does file exists? " .. tostring(FileExists(fileName)))
enet = package.loadlib(fileName, "luaopen_enet")
if not enet then
print(tostring(enet))
local rel_path = GetRelativePathOfRequiredLibs() .. "/" .. fileName
rel_path = string.gsub(rel_path, "/", "\\")
print("Trying to load enet c library by relative path with '" .. rel_path .. "' loading.. Does file exists? " .. tostring(FileExists(rel_path)))
enet = package.loadlib(rel_path, "luaopen_enet")
end
if not enet then
print(tostring(enet))
local abs_path = GetAbsolutePathOfRequiredLibs() .. "/" .. fileName
abs_path = string.gsub(abs_path, "/", "\\")
print("Trying to load enet c library by absolute path with '" .. abs_path .. "' loading.. Does file exists? " .. tostring(FileExists(abs_path)))
enet = package.loadlib(abs_path, "luaopen_enet")
end
if not enet then
print(tostring(enet))
local abs_path = [[C:\Program Files (x86)\Steam\steamapps\common\Noita\mods\noita-mp\files\libs\enet1317_lua-enet-master21-10-2015_lua5-1_32bit.dll]]
print("Trying to load enet c library by absolute path with '" .. abs_path .. "' loading.. Does file exists? " .. tostring(FileExists(abs_path)))
enet = package.loadlib(abs_path, "luaopen_enet")
end
if enet then
print("enet c library '" .. fileName .. "' was loaded by function load.")
enet()
else
print(tostring(enet))
print("enet c library '" .. fileName .. "' was loaded by require load.")
require("enet1317_lua-enet-master21-10-2015_lua5-1_32bit")
end
end
我已经尝试将 enet*.dll 放到 noitas 根文件夹中的不同位置,例如单独的 ssd,但没有更改任何内容。
这里有人想解决这个问题吗?
【问题讨论】: