SLua 中使用 Lua 5 3 的編譯工程

2022-05-19 15:09:22 字數 934 閱讀 5301

2016-03-05 更新:

之前編譯的庫,在 android 下 lua_number 和 lua_integer 被編譯為了32位,導致從 c# 到 lua 過程中有64位到32位整型轉換會出現溢位出錯,出現異常大的負整數。

以下修改或是之前遺漏的部分均使用紅色表示。

2016-11-21 更新:

之前編譯的庫都是用的是 32位的 ndk(當時vs2015還不支援最新的64位ndk),如果你是用64位的 ndk 編譯請注意相容性問題;其二請注意安卓打包的庫目錄問題,安卓庫 "libs"目錄下對應於不同的cpu目錄:

arm 32: "armeabi-v7a"

arm 64: "arm64-v8a"

x86 32: "x86"

x86 64: "x86_64"

我們專案將 slua 中的 lua 核心公升級為了 5.3.2,新增了 lpeg 和 sproto(和伺服器相容)。

整個工程直接分別建立了 mac 和 ios 的 xcode 工程,以及 windows 和 android 的 vs2015工程,vs 支援 clang 和 gcc 後,可以直接建立 android ndk 工程。

vs2015 只支援 ndk r10e 32位,使用更高版本將無法使用 clang,因為 vs2015預設且只支援 clang 3.6,具體請閱讀這裡。各個 android 需求工具的安裝預設路徑,請參考這裡。

使用 vs2015 編譯 android 版本 slua 需要注意的幾個地方:

編譯工程slua + lua 5.3.2 + lpeg 1.0.0 + sproto

後續:由於 premake5 目前對 vs2015 的支援還不完整,打算利用業餘時間擴充套件 premake5,同時將改工程修改為 premake5 工程並提交到 github。

Lua5 3遇到的坑

attempt to call a nil value global unpack 在lua 5.2和5.3的版本中,全域性的unpack函式已經被移除了,改為table.unpack,所以如果用到的第三方庫或者源 使用了unpack方法,可以在 前面加上 local unpack unpack o...

lua 5 3語法分析的BNF

看lua直譯器源 的時候發現和lua官網上給的有點出入,自己記錄一下 官網的文件 直接在頁面搜尋bnf就行了 以下是從原始碼的注釋裡扣出來的,原始碼注釋有些地方寫的有點問題,可能是作者版本迭代的時候忘記改注釋了,幫作者改了一點 block statlist statlist fieldsel nam...

高速掌握Lua 5 3 擴充套件你的程式 1

a config.lua 檔案裡 window size width 200 height 300 main.c 檔案裡 include include include include include include void error lua state l,const char fmt,voi...