Lua require 可以在 Windows 7 上运行,但在 XP 上无法运行。

我正在使用基本的 require 导入一个模块:

require "luatorrent"

在 Windows 8/7/Vista的32位和64位版本上,一切正常,但在XP上运行项目时我遇到了这个错误:

enter image description here

所以问题是:

A: 有人知道为什么这个问题似乎只在XP上出现,尽管它使用的是同样的Lua 5.1和其他文件吗?

B: 如果这不是可以通过重新编译模块来修复的原因,而我因为它是旧的并且没有源代码,那么我是否可以通过 require 然后获取一个 true/false 来加载模块,以便可以使用“if”语句来继续加载模块的函数,因为抛出的错误会破坏代码并导致应用程序无法继续?

点赞
用户2128694
用户2128694

请查看 Lua 参考手册关于 package.loaders 的部分

第一个加载器会在你的 package.path 中查找 DLL 文件,然后尝试作为 DLL 文件进行加载。如果失败,则会出现你看到的错误信息。因此,Lua 通常会继续使用 DLL 加载器,在 package.cpath 中查找 DLL 文件。我猜你的文件不在 cpath 中。另外,DLL 加载器也可能不存在。请检查是否 #package.loaders != 4

为了调试,你也可以尝试通过低级别的 package.loadlib 函数来加载 DLL 文件(funcname 应为 "luaopen_luatorrent")。

我想到的另一个原因是,DLL 是 64 位的,但你的系统是 32 位的 XP。但我认为,在这种情况下,错误信息会有所不同。

2013-03-04 16:23:34
用户1447683
用户1447683

感谢大家的帮助,结果发现这个模块需要将 libeay32.dll 放在 system32 目录中或与模块相同的文件夹中才能工作。

2013-03-04 22:22:32