編譯 Lua 的 zlib 庫 lua zlib

2021-06-03 13:30:36 字數 895 閱讀 9385

最近需要使用 lua 給 wireshark 寫個外掛程式(dissector),苦於基於 c 的文件實在是太少了,乾脆就用 lua 來寫。但是 lua 也真是夠「輕量」的,官方都沒有個支援 zlib 壓縮/解壓的庫。最後終於找到了 lua-zlib (url:可以支援實時的流(stream)壓縮/解壓。

1. 使用 cmake-gui 開啟 lua-zlib 源**目錄(目錄存在有 cmakelists.txt),選擇相應的編譯器。

2. 點 configure 後,會提示一些錯誤。按提示修改好 lua 的路徑。

3. 然後點 generate,就會在 build 目錄中生成 vs2010 的解決方案 lua-zlib.sln。

5. 最後就可以直接生成 release 版的 lua-zlib 庫了。最終會生成乙個 zlib.dll(lua-zlib 庫),需要依賴 zlib1.dll(原始的 zlib 庫,wireshark 帶有)。

使用方法:

首先要將 zlib.dll 複製到 wireshark 的安裝目錄(原本的目的就是給 wireshark 寫外掛程式的)。然後在 lua **中引用 zlib:

require 'zlib'
在解壓資料之前,生成乙個函式:

uncompress = zlib.inflate()
然後就可以使用 uncompress 來解壓資料:

local inflated, eof, bytes_in, bytes_out = uncompress(compressed_string)
引數 compressed_string 是壓縮的資料, 返回的 inflated 是解壓後的資料,bytes_in 是壓縮資料的長度,bytes_out 是解壓後資料的長度。

zlib庫的編譯和使用

windows下編譯有很多種方法。1 在contrib vstudio資料夾下,使用對應版本的vs開啟,執行。備註 1 如果編譯過程 現 fatal error lnk1281 無法生成 safeseh 映像 的錯誤,則將該項目的 屬性頁 鏈結器 高階 映像具有安全異常處理程式 選 否 2 此版本生...

zlib庫在windows系統中的編譯

zlib是提供資料壓縮之用的函式庫,此函式庫為自由軟體,由jean loup gailly與mark adler所開發,zlib使用deflate演算法,最初是為libpng函式庫所寫的,後來普遍為許多軟體所使用。1.安裝mingw5.1.4 2.安裝msys 1.0.10和msysdtk 1.0....

編譯lua動態庫

編譯lua直譯器的時候要依賴於lua動態庫來編譯,不能編譯成靜態的,否則在呼叫c模組的時候就會出現 multiple lua vms detected 的錯誤。multiple lua vms detected 什麼意思呢,就是說有多個虛擬機器載入,起衝突了。如果lua用靜態來編譯,就會載入乙個虛擬...