2013-03-03 16 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或與該模塊工作的模塊相同的文件夾中。

相關問題