1

我需要一个具有基本要求的模块:

  require "luatorrent"

并且在 32 位和 64 位版本的 Windows 8/7/Vista 上一切正常,但是当项目在 XP 上运行时出现此错误:

在此处输入图像描述

所以问题是:

A:任何人都知道为什么这个问题似乎是特定于 XP 的,即使它是相同的 Lua 5.1 和其他文件?

B:如果在不重新编译模块的情况下无法解决这个问题,我不能这样做,因为它是旧的并且没有源代码,那么我可以以某种方式执行要求,然后在加载时得到一个真/假,这样我就可以做一个“如果”声明继续加载模块的功能,因为抛出的错误会破坏代码并且应用程序不会继续?

4

2 回答 2

3

查看package.loaders 上的 Lua 参考手册条目

第一个加载程序在您的 DLL 中找到package.path并尝试将其加载为 DLL。它失败并显示您看到的错误消息。因此 Lua 通常会使用 DLL 加载器,它会在package.cpath. 我猜你的文件不在cpath. 或者,可能缺少 DLL 加载程序。检查是否#package.loaders != 4

对于调试,您还可以尝试通过低级package.loadlib函数加载 DLL(funcname 应该是"luaopen_luatorrent")。

我想到的另一个原因是,DLL 是 64 位的,而您的 XP 是 32 位的。但我认为,在这种情况下,错误消息看起来会有所不同。

于 2013-03-04T16:23:34.597 回答
1

感谢人们的帮助,事实证明 libeay32.dll 需要位于 system32 或与该模块工作的模块相同的文件夹中。

于 2013-03-04T22:22:32.850 回答