Lua require可在Windows 7中使用,但不能在XP中使用

Lua require可在Windows 7中使用,但不能在XP中使用,lua,Lua,我需要一个具有基本要求的模块: require "luatorrent" 在32位和64位版本的Windows 8/7/Vista上,一切正常,但当项目在XP上运行时,我会遇到以下错误: 因此,问题是: 答:有人知道为什么这个问题看起来是XP特有的,尽管它与Lua5.1和其他文件非常相似 B:如果没有重新编译模块,这是无法修复的,我不能这样做,因为它很旧,没有源代码,那么,我是否可以以某种方式执行要求,然后获得一个true/false if加载,这样我就可以执行if语句继续加载模块的函数,

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

  require "luatorrent"
在32位和64位版本的Windows 8/7/Vista上,一切正常,但当项目在XP上运行时,我会遇到以下错误:

因此,问题是:

答:有人知道为什么这个问题看起来是XP特有的,尽管它与Lua5.1和其他文件非常相似

B:如果没有重新编译模块,这是无法修复的,我不能这样做,因为它很旧,没有源代码,那么,我是否可以以某种方式执行要求,然后获得一个true/false if加载,这样我就可以执行if语句继续加载模块的函数,因为抛出的错误破坏了代码,应用程序将无法继续?

请查看

第一个加载程序在package.path中找到DLL,并尝试将其作为DLL加载。它将失败,并显示您看到的错误消息。因此,Lua通常使用DLL加载程序,它在中查找DLL。我猜你的档案不在cpath里。或者,DLL加载程序可能丢失。检查package.loaders!=四,

对于调试,您还可以尝试通过低级函数funcname加载DLL。funcname应为luaopen_luatorrent

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

请查看

第一个加载程序在package.path中找到DLL,并尝试将其作为DLL加载。它将失败,并显示您看到的错误消息。因此,Lua通常使用DLL加载程序,它在中查找DLL。我猜你的档案不在cpath里。或者,DLL加载程序可能丢失。检查package.loaders!=四,

对于调试,您还可以尝试通过低级函数funcname加载DLL。funcname应为luaopen_luatorrent


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

感谢帮助人员,结果是libeay32.dll需要位于system32中,或者与模块位于同一文件夹中,此模块才能工作

感谢大家的帮助,原来libeay32.dll需要位于system32中,或者与模块位于同一文件夹中,才能使该模块正常工作

请参阅lhf,非常感谢,它会处理运行错误,但我知道这是一个很长的机会,因为模块代码不可用,但是您是否有任何想法,无论多么遥远,为什么它不会在xp上运行?为什么源代码不可用?这不是吗:?dualed,谢谢,我刚找到一个编译过的dll,其中有一个指向现已废弃的项目站点的链接参见lhf,非常感谢,它解决了运行错误,但我知道这是一个很长的过程,因为模块代码不可用,但你有什么想法,无论多么遥远,至于为什么它不能在xp上运行?为什么源代码不可用?这不是吗:?dualed,谢谢,我刚找到一个编译过的dll,其中有一个链接到一个现已废弃的项目站点。谢谢Oberon,package.loaders确实是4,并且没有抛出错误:package.loadlib'luatorrent',luaopenluatorrentif package.loaders是4,这是正确的,因此dll加载程序应该是四个加载程序之一。所以这不应该是你问题的原因。检查DLL是否可以通过package.cpath.Hi找到,package.cpath显示一个预定义位置的加载,包括应用程序的根目录,尝试将DLL移动到其他位置,同样的情况也发生了,lfs和通道工作正常。感谢Oberon,package.loaders确实是4,并且没有抛出错误:package.loadlib'luatorrent',luaopen_luatorrentIf package.loaders是4,这是正确的,因此DLL加载程序应该是四个加载程序之一。所以这不应该是你问题的原因。检查DLL是否可以通过package.cpath.Hi找到,package.cpath显示了一系列预定义的位置,包括应用程序的根目录,尝试将DLL移动到其他位置,同样的情况也发生了,lfs和通道工作正常。