2011-08-25 48 views
1

我試圖設置Wireshark,以便我可以使用LuaInterface來使用.NET框架中的某些類。我可以通過Lua命令行運行它,但是當我在init.lua啓動腳本中嘗試require "CLRPackage"時,它似乎找不到所需的文件。 Wireshark的開始時,我得到以下異常:如何設置Wireshark運行Lua的CLRPackage

Lua: Error during loading: 
C:\Program Files\Wireshark\luascript.lua:25: module 'CLRPackage' not found: 
    no field package.preload['CLRPackage'] 
    no file '.\CLRPackage.lua' 
    no file 'C:\Program Files\Wireshark\lua\CLRPackage.lua' 
    no file 'C:\Program Files\Wireshark\lua\CLRPackage\init.lua' 
    no file 'C:\Program Files\Wireshark\CLRPackage.lua' 
    no file 'C:\Program Files\Wireshark\CLRPackage\init.lua' 
    no file 'C:\Program Files\Lua\5.1\lua\CLRPackage.luac' 
    no file '.\CLRPackage.dll' 
    no file '.\CLRPackage51.dll' 
    no file 'C:\Program Files\Wireshark\CLRPackage.dll' 
    no file 'C:\Program Files\Wireshark\CLRPackage51.dll' 
    no file 'C:\Program Files\Wireshark\clibs\CLRPackage.dll' 
    no file 'C:\Program Files\Wireshark\clibs\CLRPackage51.dll' 
    no file 'C:\Program Files\Wireshark\loadall.dll' 
    no file 'C:\Program Files\Wireshark\clibs\loadall.dll' 

我已經嘗試設置package.pathpackage.cpath以匹配設置在命令行,但似乎沒有幫助。

package.path = ";.\\?.lua;C:\\Program Files\\Lua\\5.1\\lua\\?.lua;C:\\Program Files\\Lua\\5.1\\lua\\?\\init.lua;C:\\Program Files\\Lua\\5.1\\?.lua;C:\\Program Files\\Lua\\5.1\\?\\init.lua;C:\\Program Files\\Lua\\5.1\\lua\\?.luac;C:\\Program Files\\Lua\\5.1\\lua\\?lua" 

package.cpath = package.cpath .. ".\\?.dll;.\\?51.dll;C:\\Program Files\\Lua\\5.1\\?.dll;C:\\Program Files\\Lua\\5.1\\?51.dll;C:\\Program Files\\Lua\\5.1\\clibs\\?.dll;C:\\Program Files\\Lua\\5.1\\clibs\\?51.dll;C:\\Program Files\\Lua\\5.1\\loadall.dll;C:\\Program Files\\Lua\\5.1\\clibs\\loadall.dll;C:\\Program Files\\Lua\\5.1\\clibs\\luanet.dll" 

當我這樣做,我得到以下錯誤:

Lua: Error during loading: 
    error loading module 'luanet' from file 
    'C:\Program Files\Lua\5.1\clibs\luanet.dll': 
    The spcecified module could not be found. 

這是一個奇怪的錯誤,因爲該文件明確存在。

我已經在C:\Program Files\Lua\5.1安裝了用於windows的Lua包。

有沒有人能夠得到這個工作?任何幫助,將不勝感激。

我使用Wireshark的1.4.4與5.1.4的Lua

+0

表明您正在使用的操作系統版本。 – sylvanaar

+0

我從(http://code.google.com/p/luaforwindows/downloads/list)下載了luaforwindows。它的版本是5.1.4-45 – SwDevMan81

+0

什麼版本的Windows – sylvanaar

回答

1

我收到我需要在在Wireshark的網站(answer

你Wireshark是舊的幫助。目前的穩定版本是Wireshark 1.6.1

Wireshark已經包含了Lua。你不需要安裝你自己的Lua拷貝,因爲Wireshark帶有它自己的Lua解釋器(並且只會使用它自己的)。但是,您的Wireshark Lua腳本仍然可以調用由LuaForWindows安裝的庫。

LuaInterface 1.5.3可能不兼容。 LuaForWindows v5.1.4-45附帶LuaInterface 1.5.3,它可能與您的Wireshark安裝不兼容(加載luanet.dll時運行時錯誤R6034表現出來)。對於Windows 7上的Wireshark 1.6.1,我確實如此。您可以從此ticket獲得兼容的LuaInterface 2.0.3二進制文件。

說明

1)從LuaForWindows複製VS2005 SP1再分發到的Wireshark程序目錄(或您可以從Microsoft下載的REDIST包...見票):

來源:

  • %PROGRAMFILES%\的Lua \ 5.1 \安裝\支持\ Microsoft.VC80.CRT.SP1 \ Microsoft.VC80.CRT.manifest
  • %PROGRAMFILES%\ Lua \ 5.1 \ install \ support \ Microsoft.VC80.CRT.SP1 \ msvcm80.dll
  • %PROGRAMFILES%\ Lua \ 5.1 \ install \ support \ Microsoft.VC80.CRT.SP1 \ msvcp80。dll的
  • %PROGRAMFILES%\的Lua \ 5.1 \安裝\ SUPPORT \ Microsoft.VC80.CRT.SP1 \ MSVCR80.DLL

要:

  • %PROGRAMFILES%\ Wireshark的\微軟.VC80.CRT.manifest
  • %PROGRAMFILES%\ Wireshark的\ msvcm80.dll
  • %PROGRAMFILES%\ Wireshark的\ msvcp80.dll
  • %PROGRAMFILES%\ Wireshark的\ msvcr80.dl升 2)從這張票下載LuaInterface 2.0.3 ZIP,並複製從它下面:

來源:

  • ... \ BIN \發佈\ LuaInterface.dll
  • ... \ BIN \發佈\ luanet.dll

要:

  • %PROGRAMFILES%\ Wireshark的\ clibs \ LuaInterface.dll
  • %PROGRAMFILES%\ Wireshark的\ clibs \ luanet.dll

來源:

  • ... \ LuaInterface \ LUA \ CLRForm.lua
  • ... \ LuaInterface \ LUA \ CLRPackage.lua

到:

  • %PROGRAMFILES%\ Wireshark的\ LUA \ CLRForm.lua
  • %PROGRAMFILES%\ Wireshark的\ LUA \ CLRPackage.lua

3)重新啓動的Wireshark/tshark的若已經運行。

4)可選:來自Wireshark,打開菜單工具> Lua>評估。在出現的文本框中,輸入一些sample code,然後單擊評估

這將導致這樣的事情:

Output http://s1.postimage.org/2nrqg8flw/Screen_Shot_2011_08_25_at_10_24_05_PM.jpg

0

你需要使用 「...」 字符串時逃跑反斜槓。如果使用[[...]]字符串,則可以避免轉義。

+0

感謝您的迴應。當我把它放在引號中時,看起來像是刪除了轉義字符。我將其更改爲代碼括號。我確實有反斜槓逃脫。任何其他想法還是它看起來像我的更新中的錯誤? – SwDevMan81