Lua筆記——8.Lua & C
阿新 • • 發佈:2018-10-12
函數 程序 頭文件 c++中使用lua 之間 行數 ber amp class
Lua是一門嵌入式語言,提供了完備的 C API 方便 Lua 代碼和其他宿主程序相互調用來擴展程序功能。在C中嵌入Lua腳本可以讓用戶在不重新編譯代碼的情況下只修改Lua代碼來更新程序。在Lua中調用C函數則可以提高程序的運行效率。
操作環境:根據自己使用的環境來配置lua.(這裏使用Win + VS,Lua 使用5.3版本)
- 理解C API:Lua和C交互的部分稱為C API。C API是一個C代碼與Lua進行交互的函數集。在C/C++中使用Lua C API 時,需要引入的Lua頭文件:
- lua.h:主要包含Lua的基礎函數,以 lua_ 開頭
- lauxlib.h:(lua auxiliary library 即lauxlib)主要包含Lua的輔助函數,以 luaL_ 開頭
- lualib.h:主要包含Lua打開內置庫的函數
- 理解Lua堆棧:Lua和C之間通過一個抽象的Lua棧(lua_State *L)來進行數據交換,Lua和C之間的相互調用,即是通過Lua C API 來對Lua棧進行操作。
- Lua代碼中,嚴格遵守Lua棧的LIFO原則,只能操作棧頂元素
- C代碼中,可以操作Lua棧中任意元素,即可以在棧的任意位置刪除和插入元素
- Lua棧中可以存放各種類型的變量,例如number、string、函數、線程等
C調用Lua
在C代碼中調用Lua的基本流程為:
- 引入Lua頭文件
- 創建Lua棧
- 打開所需的Lua庫
- 加載Lua代碼
- 執行Lua代碼
- 獲取Lua代碼執行結果
- 關閉Lua棧
Lua調用C
通過在C中註冊函數給lua調用
封裝成c動態鏈接庫,在lua中require
在LuaJIT裏面可以使用ffi高性能的調用C
REF
博客:
https://www.jb51.net/article/132851.htm
https://blog.csdn.net/alexwoo0501/article/details/50916037
Lua筆記——8.Lua & C