Lua5 3 5原始碼編譯

2021-10-04 15:02:32 字數 2135 閱讀 3100

vs2017 新建專案->控制台應用

將解壓出來的src資料夾,拷貝到解決方案目錄下

建好專案,新增lua原始碼:

ctrl+a 選擇src目錄下所有檔案,並新增至專案

至此準備工作完成,接下來分別編譯lua直譯器lua.exe,lua編譯器luac.exe,lua靜態庫(或者動態庫)lualib.lib

編譯lua.exe

從專案"原始檔"篩選器中移除 luac.c。編譯即可。

編譯luac.exe

建議在解決方案下新建個luac的專案,依然將src下所有檔案新增至專案,從專案"原始檔"中移除 lua.c,編譯即可。

編譯lualib.lib(或luadll.dll)

在解決方案下新建專案lualib 專案(根據需要,動態庫或者靜態庫自行選擇),同樣將src下所有檔案新增至專案,從專案"原始檔"中移除 lua.c和luac.c

也可以先建立控制台應用,然後在專案屬性裡改:

編譯好lua.exe與luac.exe後,記得把它們新增到環境變數,否則用起來很不方便。新增環境變數方法,網上資料很多,這裡就不說了。

上面教程,在網上隨便都可以搜到,我說說我遇到的坑...

我也按照上面教程編譯出lua.exe luac.exe。寫了乙個測試程式,進行測試

可見lua.exe是沒問題的。

測試luac:

正常輸入luac a.lua,a.lua所在目錄下應該會生乙個.out檔案,但我執行完並沒有生成。

看了一下原始碼,發現問題所在。

我們為什麼在前面要把lua.c或者luac.c只留乙個,或者兩個都刪除(編譯lib)? 因為lua.c裡有乙個main函式,即lua.exe的入口,而luac.c裡也有main函式。但正常情況下,乙個程式只能有乙個main函式入口,所以我們要將另外乙個刪除,否則有多個main函式會衝突、報錯或者出現一些奇怪的問題。

我的問題就找到了,因為在生成專案的時候,會自動生成乙個專案名.cpp(luac專案會生成luac.cpp),這個cpp檔案中,就定義了乙個main函式,編譯的時候,把這個函式作為程式的入口函式,把luac.c中的main函式忽略了。所以luac就無法獲取到傳進來的引數,也就不會生成.out檔案。

所以在編譯的時候,還要記得把專案自動生成的 專案名.cpp檔案移除(例如lua.cpp),因為這個檔案中的main函式會影響 lua.c或者luac.c中main函式 獲取引數,從而使程式無法正常工作。

想我編譯lua.exe時,沒有把lua.cpp移除,而且還能正常執行 a.lua檔案,應該屬於運氣好。luac.exe一下就把問題暴露了

記下來這個小插曲,防止別人遇到和我同樣的問題

lua 原始碼編譯

對於乙個開源工程,開始學習它的第一步自然是編譯工程。使用vc編譯lua,在網上已有許多介紹,但 紙上得來終覺淺 自己走一遍還是有必要的。步驟如下 2.開啟vc建立乙個solution,就叫lua.sln 3.建立乙個名為liblua的project lua庫 新增除lua.c和luac.c以外的所有...

windows下編譯lua原始碼

因為之前一直使用 lua for windows 來搭建lua的使用環境,但是最新的 lua for windows 還沒有lua5.2,我又想用這個版本的lua,所以被逼無奈只能自己編一下lua原始碼。首先從 lua的官網 所有的lua原始碼都放在了 src 資料夾下,當然,不同的lua版本目錄結...

Lua Windows 下編譯 Lua 原始碼

系統 windows10 編譯工具 visual studio 2015 原始碼 lua 5.3.4 前面有一篇部落格介紹安裝 lua 的環境的方法是採用安裝 luaforwindows.exe 的方式,這種方式是很方便很好用,可是往往這種方式只能給到乙個非最新版的安裝程式。我們可以通過編譯官網給出...