2013-03-03 49 views
1
工作

我需要的基本模块要求:的Lua需要在Windows 7的作品,但不与XP

require "luatorrent" 

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

enter image description here

所以问题是:

答:任何人有任何想法,为什么这个问题似乎即使它与Lua 5.1和其他文件非常相似,它仍然是XP特有的? B:如果这不是没有重新编译模块就可以解决的问题,我不能这样做,因为它的旧版本并没有源代码,那么我可以以某种方式执行require,然后得到一个真/假,如果加载,所以我可以做一个“if”语句继续为模块加载函数,因为抛出的错误会破坏代码并且应用程序不会继续?

+3

查看http://stackoverflow.com/questions/15154740/how-to-gracefuly-try-to-load-packages-in-lua – lhf 2013-03-03 17:39:29

+0

lhf,非常感谢你,照顾运行错误,但我由于模块代码不可用,所以知道它很长一段时间,但是您是否有任何想法,但是远程的,至于为什么它只是不会在XP上运行? – 2013-03-03 18:04:12

+0

为什么源代码不可用?是不是这个:http://files.luaforge.net/releases/luatorrent/luatorrent/Version0.2? – dualed 2013-03-04 15:12:00

回答

3

看看Lua Reference Manual entry on package.loaders

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

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

我想到的另一个原因是,DLL是64位的,但是你的XP 32位。但我认为,在这种情况下,错误信息看起来不一样。

+0

,谢谢Oberon,#package.loaders的确是4,没有错误抛出:package.loadlib('luatorrent',“luaopen_luatorrent” ) – 2013-03-04 18:12:52

+0

如果'#package.loaders'是4,那么它是正确的,所以DLL加载器应该是四个之一。所以这应该不是**问题的原因。检查DLL是否可以通过'package.cpath'找到。 – Oberon 2013-03-04 18:14:36

+0

你好,package.cpath显示预先定义的位置的负载,包括应用程序的根,试图将DLL移动到其他位置,并发生同样的事情,lfs和通道工作得很好。 – 2013-03-04 19:16:46

1

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

相关问题